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 自带的文件上传及生成缩略图功能的更多相关文章

  1. CI自带的文件上传及生成缩略图

    /* * 文件上传 * @param $upload_path 文件上传路径 * @param $formpic 表单name属性名称 */ private function doUpload($up ...

  2. spring boot:实现图片文件上传并生成缩略图(spring boot 2.3.1)

    一,为什么要给图片生成缩略图? 1, 用户上传的原始图片如果太大,不能直接展示在网站页面上, 因为不但流费server的流量,而且用户打开时非常费时间, 所以要生成缩略图. 2,服务端管理图片要注意的 ...

  3. Office文件上传自动生成缩略图

    来源:微信公众号CodeL 前不久产品经理提出一个X的需求,说上传office文件的时候需要将首页自动截图,用于显示文件列表的时候将文件第一页缩略图展示给用户.实现的方式有多种,这里给大家介绍一个简单 ...

  4. Office文件上传自动生成缩略图-C#开发

    原文: http://www.knowsky.com/898407.html 上传office文件的时候需要将首页自动截图,用于显示文件列表的时候将文件第一页缩略图展示给用户.实现的方式有多种,这里给 ...

  5. yii php 图片上传与生成缩略图

    今天需要做图片上传与生成缩略图的功能,把代码进行记录如下: html 视图              ($pic_action_url = $this->createAbsoluteUrl('h ...

  6. AJAX文件上传实践与分析,带HTML5文件上传API。

    对于HTML5已经支持AJAX文件上传了,但如果需要兼容的话还是得用一点小技巧的,HTML5等等介绍,先来看看以前我们是怎么写的. 网上可能会有一些叫AJAX文件上传插件,但在AJAX2.0之前是不可 ...

  7. Java使用comms-net jar包完成ftp文件上传进度的检测功能

    本文章只讲述大致的思路与本次功能对应的一些开发环境,具体实现请结合自己的开发情况,仅供参考,如果有不对的地方,欢迎大家指出! 准备环境:JDK1.7 OR 1.8.eclipse.ftp服务器(可自行 ...

  8. minio实现文件上传下载和删除功能

    https://blog.csdn.net/tc979907461/article/details/106673570?utm_medium=distribute.pc_relevant_t0.non ...

  9. jQuery File Upload 文件上传插件使用二 (功能完善)

    使用Bootstrap美化进度条 Bootstrap现在几乎是人尽皆知了,根据它提供的进度条组件, 让进度条显得高大尚点 正因为其功能强大,js模块文件之间牵连较深 不好的地方耦合度非常高 重要的参数 ...

随机推荐

  1. JVM类的加载顺序

    前阵子看到阿里巴巴的一提面试题是关于java类的加载顺序 package com.mikey.demo.Test; class FatherVariable{ static { System.out. ...

  2. 找出crontab表达式内符合的下一次出发时间点(经典!!!)

    参考: https://blog.csdn.net/crazycoder2010/article/details/7905848

  3. 2020牛客寒假算法基础集训营4 J 二维跑步

    https://ac.nowcoder.com/acm/contest/view-submission?submissionId=43035417 假设有i步选择不动,就有n-i步移动 假设其中又有a ...

  4. List模拟栈

    import java.util.LinkedList; import java.util.List; import java.util.Scanner; public class Main<E ...

  5. ImageSwitcher和GridView的案例开发

    (一)ImageSwitcher之手机相册的滑动查看 首先在布局文件上加一个ImageSwitcher,设置它的宽度和高度为match_parent. 在主程序中:首先设置一个存储照片资源的数组,在设 ...

  6. JS回弹原理-高级

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  7. titleView发生偏移、titleView与masonry、titleView的设置、titleView的使用

    navigationItem的titleView属性的设置本身是很简单的,容易出问题的原因是自动化布局与frame混用造成的. 本文一步一步的讲解,力求找到问题的起源.如果你也在这块同样遇到问题,不妨 ...

  8. 多iframe应用引起的内存问题

    1. 内存泄漏 1.1 什么是内存泄漏? 程序的运行需要内存.只要程序提出要求,操作系统或者运行时(runtime)就必须供给内存. 对于持续运行的服务进程(daemon),必须及时释放不再用到的内存 ...

  9. 格式化JSON插件

    参考:https://www.cnblogs.com/whycxb/p/7126116.html

  10. PAT乙级完结有感

    去年10月开始刷的题,拖拖拉拉的终于借这个假期刷完了,总的来说还是有点小激动的,毕竟,第一次刷完一个体系,在这之前,我在杭电.南阳.洛谷.leetcode.以及我们自己学校的OJ上刷过,但都没有完完整 ...