TP5 上传文件
直接贴上一个完整的代码
/**
* 图片上传方法
* @return [type] [description]
*/ /**
* 1 获取到文件
* 2 验证文件的形状是不是符合上传的规则
* 3 if(true)-> 将他储存到相应的位置
* 4 if(false) -> 返回错误信息
* 5 检查是否储存到了相应位置
* 6 if(false) -> 提示错误信息
*/
public function upload($module='admin',$use='admin_thumb'){
if($this->request->file('file')){
//获取文件
$file = $this->request->file('file');
}else{
$res['code']=1;
$res['msg']='没有上传文件';
return json($res);
} //has 方法来检测一个变量参数是否设置 param:获取数据
$module = $this->request->has('module') ? $this->request->param('module') : $module;//模块 $web_config = Db::name('webconfig')->where('web','web')->find();
/**
* config:获取数据
* DS :DIRECTORY_SEPARATOR,文件分隔符,用来统一linux和win下的斜线("/")和反斜线("\")
* EXT : Extension,文件扩展名。也就是file.php中.后面的的php
* 下面是添加的路径
* 文件/路劲
*/、 $attPath = config('static_path').DS. $module;
$attUrl = config('static_url').DS. $module;
/**
* 验证上传图片是否符合规定图片形状
* validate 封装在 thinkphp
* move(“路径”)移动到某一个路径下
* rule:规则
*/
$info = $file->validate(['size'=>$web_config['file_size']*1024,'ext'=>$web_config['file_type']])->rule('date')->move($attPath); //移动成功
if($info) {
//写入到附件表
$data = [];
$data['module'] = $module; //模型
$data['filename'] = $info->getFilename();//文件名
/**
* getSaveName
* 输出文件的位置以及文件名。
* 系统会自动创建以时间为名的文件夹,然后输出文件夹的名字和图片的名字。
*/ $data['filepath'] = $attUrl. DS . $info->getSaveName(); // 获得输出文件名的后缀
$data['fileext'] = $info->getExtension(); // 获得文件大小
$data['filesize'] = $info->getSize(); // 获取时间
$data['create_time'] = time(); // 获取IP
$data['uploadip'] = $this->request->ip(); // has:参数是否被设置!
$data['user_id'] = Session::has('admin') ? Session::get('admin') : 0; if($data['module'] = 'admin') {
//通过后台上传的文件直接审核通过
$data['status'] = 1;
$data['admin_id'] = $data['user_id'];
$data['audit_time'] = time();
}
//用处
$data['use'] = $this->request->has('use') ? $this->request->param('use') : $use;//用处 //如果获取到pic值 则不保存到附件表,直接返回图片路径到外面操作( 保存到对应数据表pic字段 ) if(!isset($_POST['pic'])){ //insertGetId(“被插入的数据”):获取插入的数据的主键
$res['id'] = Db::name('attachment')->insertGetId($data);
addlog($res['id']);//记录日志
} /**
* getSaveName
* 输出文件的位置以及文件名。
* 系统会自动创建以时间为名的文件夹,然后输出文件夹的名字和图片的名字。
*/ $res['src'] = $attUrl . DS . $info->getSaveName();
$res['code'] = 2;
return json($res); } else {
// 上传失败获取错误信息
return $this->error('上传失败:'.$file->getError());
}
}
TP5 上传文件的更多相关文章
- 关于 tp5.0 阿里云 oss 上传文件操作
tp5.0 结合阿里云oss 上传文件 1.引入 oss 的空间( composer install 跑下第三方拓展包及核心代码包) 备注:本地测试无误,放到线上有问题 应该是移动后的路劲(相对于服 ...
- TP5+阿里云OSS上传文件第三节,实现淘宝上传商品图片
**TP5+阿里云OSS上传文件第三节,实现淘宝上传商品图片首先我们来看看淘宝的功能和样式:** 之后看看制作完成的演示:(由于全部功能弄成GIF有点大,限制上传大小好像在1M之内,压缩之后也有1.9 ...
- tp5上传压缩包到相应文件并自动解压到相应文件下
<?phpnamespace app\admin\controller\upload; use app\common\controller\Backend;use think\db;use th ...
- IE8/9 JQuery.Ajax 上传文件无效
IE8/9 JQuery.Ajax 上传文件有两个限制: 使用 JQuery.Ajax 无法上传文件(因为无法使用 FormData,FormData 是 HTML5 的一个特性,IE8/9 不支持) ...
- 三种上传文件不刷新页面的方法讨论:iframe/FormData/FileReader
发请求有两种方式,一种是用ajax,另一种是用form提交,默认的form提交如果不做处理的话,会使页面重定向.以一个简单的demo做说明: html如下所示,请求的路径action为"up ...
- asp.net mvc 上传文件
转至:http://www.cnblogs.com/fonour/p/ajaxFileUpload.html 0.下载 http://files.cnblogs.com/files/fonour/aj ...
- app端上传文件至服务器后台,web端上传文件存储到服务器
1.android前端发送服务器请求 在spring-mvc.xml 将过滤屏蔽(如果不屏蔽 ,文件流为空) <!-- <bean id="multipartResolver&q ...
- .net FTP上传文件
FTP上传文件代码实现: private void UploadFileByWebClient() { WebClient webClient = new WebClient(); webClient ...
- 通过cmd完成FTP上传文件操作
一直使用 FileZilla 这个工具进行相关的 FTP 操作,而在某一次版本升级之后,发现不太好用了,连接老是掉,再后来完全连接不上去. 改用了一段时间的 Web 版的 FTP 工具,后来那个页面也 ...
随机推荐
- jsp页面String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";作用!!!!!
转自:https://blog.csdn.net/kiwangruikyo/article/details/81130311 <%String path = request.getContext ...
- 简述Sql Server中常用的数据库对象(面试题)
1.表(Table ) 数据库中的表与我们日常生活中使用的表格类似,它也是由行(Row) 和列(Column)组成的.列由同类的信息组成,每列又称为一个字段,每列的标题称为字段名.行包括了若干列信息项 ...
- 关于AJAX异步请求的那些事儿(1)
1.什么事AJAX? Asynchronous Javascript And XML:异步的JS和XML,由Google2002年在GoogleSuggest应用提出,目标实现客户端和服务器“同时”运 ...
- 乌班图 之 apt命令 及 VMware共享文件夹
apt是Advanced Packaging Tool ,是Ubuntu下的一个安装包管理工具 大部分软件的安装.更新.卸载 都是利用apt命令来实现 直接在终端输入apt即可查阅命令的帮助信息 常用 ...
- 关于exsi的虚拟网络
相关术语: VM Network 默认的网络 VSwitch (默认)标准交换机 (exsi的内核中) Port groups (用来定义各个不同vlan) DVSwitch分布式交换机(exs ...
- IIFE 萌新学习笔记
立即执行函数表达式(IIFE) IIFE:Immediately-Invoked Function Expression(立即执行函数表达式) 一 常用写法: //经常使用的写法(function() ...
- mysql联查中使用if和group by会让你的结果不是你想要的
mysql中的if语句遇到统计count group by的时候会出现不准确的情况,原因是分组后if条件的结果以第一条为准,不会跟着分组 例如: SELECT t1.*,t2.nick_name,t2 ...
- python 中i++、逻辑表达式
参考链接:https://www.cnblogs.com/yupeng/p/3345946.html i++运算符 python中没有类似i++之类实现+1的运算符,但是有++i,+-i.之类的,他们 ...
- Unity Microphone 无限时长录制
原创文章:转载请标明出处--博客园 Jason_c Unity可以很方便的通过 Microphone.Start()方法来调用麦克风,但是有一个弊端是,必须传入时长,这就很尴尬了,因为大多数时间,我们 ...
- Qt之pro配置详解
简述 使用Qt的时候,我们经常会对pro进行一系列繁琐的配置,为方便大家理解.查找,现将常用的配置进行整理. 简述 配置 注释 CONFIG DEFINES DEPENDPATH DESTDIR FO ...