一、上传图片的HTML代码
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>upload</title>
</head>
<body>
<img src="{$Think.const.IMG_URL}Uploads/{$name}" οnerrοr="this.src='{$Think.const.IMG_URL}Uploads/default.jpg'"/>
<form method='post' enctype="multipart/form-data">
<input type='file' name="image" accept='image/jpg,image/jpeg,image/gif,image/png'/><br/>
<input type='submit' value="upload"/>
</form>
</body>
</html>
一定要注意的是,form表单的
enctype="multipart/form-data"
属性一定要写上
二、上传图片后再生成缩略图保存
$upload->rootPath的默认根目录为当前项目下的Uploads文件夹,即:"./Uploads/";可以手动创建,也可以将根目录修改为已经存在的目录。
if (!empty($_FILES)) {
$upload = new \Think\Upload();// 实例化上传类
$upload->maxSize = 2048000; //上传文件最大大小
$upload->allowExts = array('jpg','jpeg','gif','png');//允许上传文件类型
$upload->rootPath = "./Application/Home/Public/"; //文件保存根目录,可以自定义
$upload->savePath = "Uploads/"; //文件保存目录
$upload->replace = 'true'; //可以替换相同名称的文件
$upload->saveName = 'image';
$file = $upload->upload()['image'];
if(!$file){
$this->error($upload->getError());//获取失败信息
} else {
$img = "./Application/Home/Public/".$file['savepath'].$file['savename'];//获取文件上传目录
$image = new \Think\Image();
$image->open($img); //打开上传图片
$image->thumb(102, 142,\Think\Image::IMAGE_THUMB_FIXED)->save($desitination.'thumb.jpg');//生成缩略图
}
}
三、生成缩略图之后再保存缩略图
图片上传过程中,直接对上传文件暂存目录下的图片进行处理,生成缩略图并保存,则原图片就不再保存,减少内存的消耗。
public function img(){
$name = $_FILES['image']['tmp_name'];//从上传文件暂存目录下读取文件
$image = new \Think\Image();
$image->open($name);//生成缩略图
$image->thumb(102, 142,\Think\Image::IMAGE_THUMB_FIXED)->save('./image.jpg');
}
并且支持多种类型的缩略图生成,设置包括Think\Image的下列常量或者对应的数字:
IMAGE_THUMB_SCALE = 1 ; //等比例缩放类型
IMAGE_THUMB_FILLED = 2 ; //缩放后填充类型
IMAGE_THUMB_CENTER = 3 ; //居中裁剪类型
IMAGE_THUMB_NORTHWEST = 4 ; //左上角裁剪类型
IMAGE_THUMB_SOUTHEAST = 5 ; //右下角裁剪类型
IMAGE_THUMB_FIXED = 6 ; //固定尺寸缩放类型
附手册图像处理:http://document.thinkphp.cn/manual_3_2.html#image
实例:
保存到同一文件夹里面的大图和缩略图
public function upload(){
$upload = new Upload(); // 实例化Upload
$upload->maxSize = 0; // 限制上传文件最大值
$upload->exts = array('jpg','jpeg','gif','png'); // 限制上传文件格式
$upload->savepath ='./'; //根目录,需要手动创建一个 Uploads 文件夹
$info=$upload->Upload(); // Upload方法开始上传,返回上传信息
if (!$info) {
$this->error($upload->getError());
}else{
//$this->success('上传成功!');
foreach ($info as $file) {
$path = '/Uploads/'.$file['savepath'].$file['savename']; // 获取文件路径和文件名
}
$image = new \Think\Image();
$image->open('.'.$path); // 打开上传的图片
// 按照原图的比例生成一个最大为20*20的缩略图并保存,前缀为"thumb_"
//$thumbPath = '/Uploads/thumb/'.$file['savepath'].'thumb_'.$file['savename'];
$thumbPath = '/Uploads/'.$file['savepath'].'thumb_'.$file['savename'];
$image->thumb(20, 20)->save('.'.$thumbPath);
}
return($path);
}