关于thinkphp图片上传问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于thinkphp图片上传问题相关的知识,希望对你有一定的参考价值。
$files1 是本地图片路径
提问:为什么一直echo出来的是提示我没有上传文件 但是我打印$files1是有地址的啊
ps:$files是通过ajax传参到php后台接受的
<input type='file' name='file'>
<input type='submit' value='提交'>
</form>
//引入UploadFile类
import('ORG.Net.UploadFile');
//实例化UploadFile类
$upload = new UploadFile();
//设置文件大小
$upload -> maxSize = 3292200;
//设置文件保存规则唯一
$upload->saveRule = 'uniqid';
//设置上传文件的格式
$upload -> allowExts = array('jpg','png','jpeg');
//保存路径
$upload->savePath ='./Public/Uploads/';
//设置需要生成缩略图,仅对图像文件有效
$upload->thumb = true;
//设置需要生成缩略图的文件前缀
$upload->thumbPrefix = 'm_'; //生产缩略图也可以根据需要生成1张或多张,2张:'m_,s_'
//设置缩略图最大宽度
$upload->thumbMaxWidth = '150';//2张的不同设置:'150,200'
//设置缩略图最大高度
$upload->thumbMaxHeight = '200';
//删除原图
$upload->thumbRemoveOrigin = true;
//上传失败返回错误信息
if(!$upload->upload())
$this->error($upload->getErrorMsg());
else
$this->success('上传成功');
//获取上传文件的信息
$inf= $upload->getUploadFileInfo();
本回答被提问者和网友采纳 参考技术B ajax不能设定设置表单的MIME编码,默认的编码格式不支持文件上传,图片实际没有上传上去 参考技术C 是不是你的表单没有设置 enctype="multipart/form-data追问
没有表单 我是直接把图片地址调到ajax传过来的 没有Input
追答那你就只传了个地址吧!你print_r($files)一下 是不是只有那个地址。真正上传文件这个$files是一个数组的
thinkphp上传图片自动压缩问题
thinkphp上传图片后由于图片较大需要剪切,但是由于大部分浏览器阻挡剪切弹出窗口造成无法剪切
故使用thinkphp的生成缩略图的功能,上传的同时直接生成缩略图并覆盖原图,这样就可以自定义上传图片的大小(备注,生成缩略图是按原比例缩放的)
代码如下
public function upload($action){ $upload = new \Think\Upload(); $upload->maxSize = 2097172; $upload->exts = array(‘jpg‘,‘gif‘,‘png‘,‘jpeg‘); $upload->savePath = ‘/Public/Uploads/‘; $info = $upload->upload(); foreach($info as $file){ $name = $file[‘savepath‘].$file[‘savename‘]; } $this->assign(‘action‘,$action); $this->assign(‘name‘,$name); if(!$info){ $this->error($upload->getError()); }else{ //生成缩略图 $image = new \Think\Image(); $image->open("./Uploads{$name}"); // 按照原图的比例生成一个最大为150*150的缩略图并保存为thumb.jpg $image->thumb(800, 800)->save("./Uploads{$name}");//直接把缩略图覆盖原图 $this->display(‘image‘); } }
以上是关于关于thinkphp图片上传问题的主要内容,如果未能解决你的问题,请参考以下文章