ThinkPHP 5 文件上传及指定宽高生成缩略图公共方法
这个是非常常用的案例,ThinkPHP 5 文件上传及指定宽高生成缩略图公共方法
/**
* 单文件上传
* name:表单上传文件的名字
* ext: 文件允许的后缀,字符串形式
* path:文件保存目录
*/
public function file_upload($name,$ext,$path){
$dir_path=ROOT_PATH.'/public/uploads/'.$path;
if (!is_dir($dir_path))mkdir($dir_path, 0777);// 使用最大权限0777创建文件
$file = request()->file($name);
$info = $file->validate(['size'=>1572864,'ext'=>$ext])->move($dir_path,true,false);
if($info){
// 成功上传后 获取上传信息
$file_path = $info->getSaveName();
$data['file_path'] = '/uploads/'.$path.'/'.$info->getSaveName();
}else{
// 上传失败获取错误信息
$data['file_path'] =$file->getError();
}
return $data;
} /**
* 图片缩率图处理
* file_path:文件路径
* width :目标宽度
* height:目标高
* path:文件保存目录 : 需事先手动创建
*/
public function file_upload_thumb($file_path,$width,$height,$path){
$fiel_url = ROOT_PATH."/public".$file_path;
$image = \think\Image::open($fiel_url);
$save_url = '/uploads/'.$path."/".sha1($fiel_url)."_".$width."_".$height.".".$image->type();
$save_name = ROOT_PATH."/public".$save_url;
$image->thumb($width, $height)->save($save_name);
return $save_url;
}
/*
* 图片上传接口
*/
public function img_upload(){
if(!empty($_FILES["file_img"]["name"])){
$file_mes = $this->file_upload('file_img','jpg,png,gif,jpeg','gift');
$file_path = $file_mes['file_path'];
switch ($upload_type) {
case '1':
$return_data['prize_img'] = $file_path;
$return_data['prize_img_view'] = Config::get("config.host_url").$file_path;
$return_data['prize_img_400'] = $this->file_upload_thumb($file_path,400,400,'gift_thumb');
$return_data['prize_img_200'] = $this->file_upload_thumb($file_path,200,200,'gift_thumb');
$return_data['prize_img_150'] = $this->file_upload_thumb($file_path,150,150,'gift_thumb');
break;
default:
$return_data['img_path'] ='';
break;
}
return json(['code' => '1', 'message' => '上传成功','result'=>$return_data]);
}else{
return json(['code' => '2', 'message' => '图片不能为空!','result'=>null]);
}
}
ThinkPHP 5 文件上传及指定宽高生成缩略图公共方法的更多相关文章
- 将本地文件上传到指定的服务器(HttpWebRequest方法)
将本地文件上传到指定的服务器(HttpWebRequest方法),通过文件流,带文件名,同文件一同上传的表单文本域及值. ///<summary> /// 将本地文件上传到指定的服务器(H ...
- thinkphp实现文件上传
文件上传详细讲解 http://www.thinkphp.cn/info/194.html 上传根目录不存在问题解决方法 http://www.thinkphp.cn/topic/10779.html
- Java 将要上传的文件上传至指定路径代码实现
代码: /** * 上传文件到指定路径 * @param mFile 要上传的文件 * @param path 指定路径 */ public static void uploadFile(Multip ...
- ThinkPHP之文件上传
在项目其中.我们有的时候需要上传图片的功能.简单的从面相过程的方法是相对较为复杂的,要一步一步的来.假设用框架的话,相对就简单了很多,主要就是方法以及每个变量所代表的意义,然后就是一些注意的地方了. ...
- .NET 等宽、等高、等比例、固定宽高生成缩略图 类
#region 根据原图片生成等比缩略图 /// <summary> /// 根据源图片生成缩略图 /// </summary> /// <param name=&quo ...
- THINKPHP源码学习--------文件上传类
TP图片上传类的理解 在做自己项目上传图片的时候一直都有用到TP的上传图片类,所以要进入源码探索一下. 文件目录:./THinkPHP/Library/Think/Upload.class.php n ...
- ThinkPHP3.2.3多文件上传,文件丢失问题的解决
描述 thinkphp多文件上传时,有些时候会出现文件丢失的情况.比如上传多个图片,最终只上传了一个图片.本地测试的时候是正常的,但上传到服务器上就会出现丢失文件这种情况. 原因 查看tp上传类(Th ...
- PHP封装一个通用好用的文件上传处理类
封装一个文件上传类完成基本功能如下: 1.可上传多个或单个文件 2.上传成功返回一个或多个文件名 3.上传失败则返回每个失败文件的错误信息 上传类中的基本功能: 1.构造参数,用户可以自定义配置参数, ...
- JavaScript,php文件上传简单实现
非ajax,非iframe,最原始使用file控件的文件上传,记录过程备忘.(同步,页面刷新) 实现目标,能够将文件上传到指定位置. 客户端用input的file控件: <form action ...
随机推荐
- 14 Vue列表渲染
列表渲染 用 v-for 把一个数组对应为一组元素(for循环) 我们可以用 v-for 指令基于一个数组来渲染一个列表. v-for 指令需要使用 item in items 形式的特殊语法, 其中 ...
- javascript动态合并表格相同的单元格
<!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="Conten ...
- LOJ P10163 Amount of Degrees 题解
每日一题 day6 打卡 Analysis 题目的意思是找在区间[x,y]之间满足能够由k个b的不同次幂相加得到的数的总数.这题的关键是转换进制,之前几道题我们保存的是数的每位数,其实也就是10进制, ...
- 对url路径中的参数进行加密--Java
需求: 后台对一些比较敏感的参数进行数据加密,然后在传送到前端.当前端跳转到后台时,再由后台对其进行解密. 参考 针对url参数的加密解密算法(java版) 修改:对中间的js页面加密代码改写为jav ...
- 【.Net设计模式系列】仓储(Repository)模式 ( 一 )
开篇 2016新年伊始,望眼过去,不知不觉在博客园已经注册8个月啦,由于最近忙于工作,博客迟迟没有更新.直到最近一直研究.Net设计模式,对一些模式有所感悟,故拿出自己的心得与大家分享,在接下来的所有 ...
- TensorFlow(八):tensorboard可视化
import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data from tensorflow.c ...
- 宏任务、微任务与Event Loop
说到宏任务和微任务,我们就不得不提 Event Loop 了 JS的本质是单线: 1. 一般来说,非阻塞性的任务采取同步的方式,直接在主线程的执行栈完成. 2. 一般来说,阻塞性的任务都会采用异步来执 ...
- java 根据年月获取当前年月的最后一天,获取当前年月有多少天
new Date( "2019-08-" + 1) 获取2019年8月的最后一天 结果为--2019-08-31 new Date(2019, 8, 0).getDate( ...
- [Codeforces1148C]Crazy Diamond——构造
题目链接: [Codeforces1148C]Crazy Diamond 题目大意: 给出一个$1\sim n$的排列要求将其排序,每次能交换两个位置的数当且仅当这两个位置下标差的绝对值大于等于$\f ...
- mysql的select语句
参考: https://www.cnblogs.com/xiaoshen666/p/10824117.html https://www.cnblogs.com/zouwangblog/archive/ ...