- define('ROOT',$_SERVER['DOCUMENT_ROOT']);
复制代码
2.公共配置文件代码,保存路径为Public/Uploads,在Public下建Uploads目录
- 'UPLOADS'=>array(
- 'rootPath' =>'./',
- 'maxSize'=>204800,
- 'savePath'=>'./Public/Uploads/',
- 'exts'=> array('jpg', 'gif', 'png', 'jpeg'),
- ),
复制代码
3.控制器里的方法
- public function upload(){
- $upload = new \Think\Upload(C('UPLOADS'));
- $info = $upload->upload();
- if(!$info){
- $this->error($upload->getError());
- }else{
- foreach ($info as $file)
- {
- $path = substr($upload->__get('rootPath'), 1) . substr($file['savepath'], 2) . $file['savename'];
- $path = dirname($_SERVER['SCRIPT_NAME']) . $path;
- $image = new \Think\Image();
- $image->open(ROOT.$path);
- $path1= substr($upload->__get('rootPath'), 1) . substr($file['savepath'], 2) . 'thumb'.$file['savename'];
- $thumbPath=dirname($_SERVER['SCRIPT_NAME']) . $path1;
- $image->thumb(100, 100,\Think\Image::IMAGE_THUMB_FILLED)->save(ROOT.$thumbPath);
- }
- echo "<p id='p1'>$path</p>";
- echo "<p id='p2'>$thumbPath</p>";
- $a=<<<path
- <script>
- var p1=document.getElementById("p1").innerHTML;
- var p2=document.getElementById("p2").innerHTML;
- var path1=parent.document.getElementById('path1');
- var path2=parent.document.getElementById('path2');
- var img=parent.document.getElementById('img');
- path1.value=p1;
- path2.value=p2;
- img.src=p2;
- </script>
- path;
- echo $a;
- }
- }
复制代码
4.html代码
- <iframe id='frameFile' name='frameFile' style="display:none;"></iframe>
- <form id='formFile' name='formFile' method="post" action="{:U('模块/控制器/upload')}" target='frameFile' enctype="multipart/form-data">
- <input type="file" name="pic">
- <input type="submit" value="上传">
- </form>
- 原始大小图片路径<input id='path1' type="text"><br>
- 缩略图路径<input id='path2' type="text"><br>
- 缩略图<img id="img" src="">
复制代码
5.ThinkPHP,tract页面报以下错误
a.Library\Think\Upload.class.php170行对$this->callback未做判断,我在前面加了
- if($this->callback)
复制代码
b.Library\Think\Image\Driver\Gd.class.php270行imagecopyresampled($img,
$this->img, $posx, $posy, $x, $y, $neww, $newh, $w, $h);参数中$x,$y未定义
我在259行后加了(如果不是0位置开始,自己调整参数值)
- $x=$y=0;
复制代码
6.多图上传的保存路径已经做了循环,其他自己完善,主要是js循环.