关于thinkphp图片上传问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于thinkphp图片上传问题相关的知识,希望对你有一定的参考价值。

$files1 是本地图片路径
提问:为什么一直echo出来的是提示我没有上传文件 但是我打印$files1是有地址的啊

ps:$files是通过ajax传参到php后台接受的

参考技术A <form method="post" action="upload.php" enctype="multipart/form-data">
<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图片上传问题的主要内容,如果未能解决你的问题,请参考以下文章

关于thinkphp上传bmp格式图片

Thinkphp图片水印和文字水印

thinkphp 检测上传的图片中是否含有木马脚本

thinkphp上传图片自动压缩问题

thinkphp如何将多张上传的图片根据状态分别存储!

ThinkPHP 上传图片压缩原图片?