tp3.2 自带的文件上传及生成缩略图功能
public function upload_file($file_name,$width,$height) {
//检查图片尺寸是否合法
$image_size = getimagesize($_FILES[$file_name]['tmp_name']);
$img_tmp_width=$image_size[''];
$img_tmp_height=$image_size[''];
$size_result = $this->checkImgSize($width,$height,$img_tmp_width,$img_tmp_height);
if($size_result['status'] == ''){
return $size_result; //格式错误直接返回
}
//执行上传
$upload_path = C('upload_path'); // Public/Uploads/
$upload = new \Think\Upload(); // 实例化上传类
$upload->maxSize = ; // 设置附件上传大小
$upload->exts = array('jpg', 'gif', 'png', 'jpeg'); // 设置附件上传类型
$upload->rootPath = './' . rtrim($upload_path, '/'); // 设置附件上传根目录
$upload_img_url=C('upload_img_url'); // /www/web/feelee_mall_img/public_html/
$rootPath=$upload_img_url . rtrim($upload_path, '/'); // 设置附件上传根目录 /www/web/feelee_mall_img/public_html/Public/Uploads
$upload->rootPath = $rootPath;
$savepath = '/ad/';
$path = '/' . $upload_path;
$upload->saveName = uniqid();
$upload->savePath = $savepath;
$upload->replace = true;
$upload->autoSub = true;
$upload->subName = "origin"; //date("Ymd");
$path1='/ad/origin/';
if(!is_dir($path1)){
mkdir($path1,);
}
// 上传单个文件
$info = $upload->uploadOne($_FILES[$file_name]);
if (!$info) {// 上传错误提示错误信息
$upload_error = C('upload_error_msg');
$error = $upload_error[$upload->getError()];
if ($error == '') {
$error = $upload->getError();
}
return $data = array(
'msg' => $error,
'status' => ,
'result'=>null
);
} else {// 上传成功 获取上传文件信息
$filenames = $path . $info['savepath'] . $info['savename'];
//生成缩略图
$info2=$this->createThumb($info,$rootPath);
$preview=C('img_base').$filenames;
return $data = array(
'msg' => '上传成功',
'status' => '',
'result' =>array(
'returnPath'=>$filenames,//保存用
'preview'=>$preview //显示用
)
);
}
}
//生成缩略图
public function createThumb($info,$rootPath){
$path2=$rootPath.'/ad/thumb/';
if(!is_dir($path2)){
mkdir($path2,);
}
$pic_size=C('pic_size');
$cn=count($pic_size);
$image=new \Think\Image();
//打开要生成缩略图的文件
for($i=;$i<$cn;$i++){
$image->open($rootPath."/ad/origin/".$info['savename']);
$url_pic='/thumb/'.$pic_size[$i] ."_". $info['savename'];
$in=strpos($pic_size[$i],"_");
$width=substr($pic_size[$i],,$in);
$height=substr($pic_size[$i],$in+);
//生成ios缩略图
$image->thumb($width,$height,)->save($rootPath."/ad".$url_pic);
}
}
manage\Application\Common\Conf\config.php
'upload_img_url'=>'/home/wwwroot/default/feelee_mall_img/public_html/',
//文件上传返回错误说明替换
"upload_error_msg" =>array(
'没有上传的文件!' => '没有上传的文件!',
'非法图像文件!' => '不允许的文件类型,只能上传jpg,gif,png,jpeg格式的文件!',
'未知上传错误!' => '未知上传错误!',
'非法上传文件!' => '非法上传文件!',
'上传文件大小不符!' => '上传文件大小超过3M!',
'上传文件MIME类型不允许!' => '不允许的文件类型,只能上传jpg,gif,png,jpeg格式的文件!',
'上传文件后缀不允许' => '不允许的文件类型,只能上传jpg,gif,png,jpeg格式的文件!',
'上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值!' => '上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值!',
'上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值!' => '上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值!',
'文件只有部分被上传!' => '文件只有部分被上传!',
'没有文件被上传!' => '没有文件被上传!',
'找不到临时文件夹!' => '找不到临时文件夹!',
'文件写入失败!' => '文件写入失败!',
'文件命名规则错误!' => '文件命名规则错误!'
),
//图片缩略图尺寸
'pic_size'=>array("640_960","640_1136","750_1334","1242_2208","1125_2436","720_1280","800_1280","1080_1920","1440_2560"),
tp3.2 自带的文件上传及生成缩略图功能的更多相关文章
- CI自带的文件上传及生成缩略图
/* * 文件上传 * @param $upload_path 文件上传路径 * @param $formpic 表单name属性名称 */ private function doUpload($up ...
- spring boot:实现图片文件上传并生成缩略图(spring boot 2.3.1)
一,为什么要给图片生成缩略图? 1, 用户上传的原始图片如果太大,不能直接展示在网站页面上, 因为不但流费server的流量,而且用户打开时非常费时间, 所以要生成缩略图. 2,服务端管理图片要注意的 ...
- Office文件上传自动生成缩略图
来源:微信公众号CodeL 前不久产品经理提出一个X的需求,说上传office文件的时候需要将首页自动截图,用于显示文件列表的时候将文件第一页缩略图展示给用户.实现的方式有多种,这里给大家介绍一个简单 ...
- Office文件上传自动生成缩略图-C#开发
原文: http://www.knowsky.com/898407.html 上传office文件的时候需要将首页自动截图,用于显示文件列表的时候将文件第一页缩略图展示给用户.实现的方式有多种,这里给 ...
- yii php 图片上传与生成缩略图
今天需要做图片上传与生成缩略图的功能,把代码进行记录如下: html 视图 ($pic_action_url = $this->createAbsoluteUrl('h ...
- AJAX文件上传实践与分析,带HTML5文件上传API。
对于HTML5已经支持AJAX文件上传了,但如果需要兼容的话还是得用一点小技巧的,HTML5等等介绍,先来看看以前我们是怎么写的. 网上可能会有一些叫AJAX文件上传插件,但在AJAX2.0之前是不可 ...
- Java使用comms-net jar包完成ftp文件上传进度的检测功能
本文章只讲述大致的思路与本次功能对应的一些开发环境,具体实现请结合自己的开发情况,仅供参考,如果有不对的地方,欢迎大家指出! 准备环境:JDK1.7 OR 1.8.eclipse.ftp服务器(可自行 ...
- minio实现文件上传下载和删除功能
https://blog.csdn.net/tc979907461/article/details/106673570?utm_medium=distribute.pc_relevant_t0.non ...
- jQuery File Upload 文件上传插件使用二 (功能完善)
使用Bootstrap美化进度条 Bootstrap现在几乎是人尽皆知了,根据它提供的进度条组件, 让进度条显得高大尚点 正因为其功能强大,js模块文件之间牵连较深 不好的地方耦合度非常高 重要的参数 ...
随机推荐
- 计蒜客 青出于蓝胜于蓝(dfs序+树状数组)
题目描述 武当派一共有 n 人,门派内 n 人按照武功高低进行排名,武功最高的人排名第 1,次高的人排名第 2,... 武功最低的人排名 第 n.现在我们用武功的排名来给每个人标号,除了祖师爷,每个人 ...
- oracle连接种类
等连接:连接条件使用等号 非等连接:连接条件使用等号以外的其它符号 内连接:根据指定的连接条件进行连接查询,满足连接条件的数据才会出现在结果集 外连接:在内连接的基础上,将某个连接表不符合连接条件的记 ...
- git——解决每次拉取、提交代码时都需要输入用户名和密码
在开发中我们经常需要通过 git 对代码进行拉取和提交,频繁地输入用户名和密码会带来很大的麻烦,下面就介绍一下解决git每次拉取.提交代码时都需要输入用户名和密码的方法. 很简单,只要两步骤就能实现: ...
- Redis实战(20)Redis 如何从海量数据中查询出某一个 Key?
序言 资料 https://www.cnblogs.com/vipstone/p/12373734.html
- 「AT2021」キャンディーとN人の子供 / Children and Candies
前言 今天练习赛出了这道题,由于我太菜没有在考场上做出来. 翻了题解后,感觉题解讲的并不是十分直观,所以自己写一篇. 题目大意 太长了,不讲了. 数据范围: \(1\leq N\leq 400\) \ ...
- 输出复选框选中的文件名 checkbox
1. <tr> <td><input type="checkbox" name="cbxFileName"/> ...
- Kibana7.3.2与ElasticSearch7.3.2的集成
上接: Ubuntu18.04 ElasticSearch7.3.2集群搭建 上传二进制包解压到指定目录, 修改目录名 tar -xzvf tar xzvf kibana-6.3.2-linux-x8 ...
- vue iviem UI grid布局
Grid 栅格 概述 我们采用了24栅格系统,将区域进行24等分,这样可以轻松应对大部分布局问题.使用栅格系统进行网页布局,可以使页面排版美观.舒适. 我们定义了两个概念,行row和列col,具体使用 ...
- java反射初探
java反射 反射是java的重要特性之一,java.lang.reflect 是jdk支持反射的重要包,我下面可能会对构造器Constructor,属性Filed,方法Method会用到.反射其实很 ...
- Java-android使用GridView布局的电子相册&服务器获取图片
转 http://www.tuicool.com/articles/B7JNv2 电子相册的思路: 1.先是考虑布局,我用的是GridView布局 2.GridView中又该怎么显示图片,其实我的这 ...