jQuery File Upload 插件 php代码分析
jquery file upload php代码分析
首先进入构造方法 __construct() 再进入 initialize()
因为我是post方式传的数据 在进入initialize()中的post()
也就是说 经过上面的分支 最终进入的post() 在1255行
看到这个
$upload = isset($_FILES[$this->options['param_name']]) ?
$_FILES[$this->options['param_name']] : null;
上传后tmp文件的地址就在$upload中
$this->options['param_name'] 根据最前面的定义 这里的值是files
和DEMO中的页面的值一致 在html中 name="files[]"
因为是php 对多文件框的处理 页面中名字后面要加[] 但是后台仍是files 因为我只需变量名 []只是说明是多文件框
所以这里 upload 的值就是$_FILES["files"]
PS:看这里http://www.cnblogs.com/cart55free99/p/3495387.html
要获取到tmp文件路径 首先要从$_FILES获取值 $_FILES["xxx"]
xxx和页面上的name属性要匹配
看到1280行
$file_name ? $file_name : $upload['name'][$index],
如果$file_name是空 那么传入handle_file_upload中的第二个参数
就是$upload['name'][$index]
也就是$_FILES["files"]['name'][$index] 也就是文件本身的名字
=======================================
关于$this->get_server_var()
在1101行有定义
protected function get_server_var($id) {
return isset($_SERVER[$id]) ? $_SERVER[$id] : '';
什么是$_SERVER呢?
参考http://www.chhua.com/web-note2893
==========================================
关于删除
当上传后服务器端传来的json中一个file数据含有deleteType 和 deleteUrl项时 页面就会显示DELETE按钮
否则就只显示黄色的cancel按钮
点击删除按钮 会发送一个含有待删除文件名的带参请求 同时这个请求的TYPE是DELETE (请求TYPE种类:PUT GET POST...)
比如
Request URL:http://localhost/jQuery-File-Upload-8.8.7/server/php/?file=index.jpg
Request Method:DELETE
那么在153行左右 initialize函数就进入delete分支
delete()在967行 进入delete后通过isFile()作判断看文件是否存在 之后就可以删除文件 unlink()是删除文件函数
关于缩略图
约303行 create_scaled_image()函数就是创建缩略图的 其中version是用来计算版本号 比如已经有pic图片 再上传同名图片就是pic(1)
这里的options在后面有用到 options是一个数组 后面取options['crop']的值 来看看所上传的图片的缩略图是否需要裁减(有些图片本身很小 无需裁减 不过大部分图片都需要裁减)
约383行 imagecopyresampled — 重采样拷贝部分图像并调整大小 调整图片后写入 394行这里看不明白 但是write_image不是函数名
例如在44行
'upload_dir' => dirname($this->get_server_var('SCRIPT_FILENAME')).'/files/',
$_SERVER['SCRIPT_FILENAME']:当前运行 PHP程序的绝对路径及文件名。
dirname(XXX) 则是获取xxx所在的目录(如果XXX是目录就是获得XXX父及目录)
因此这里upload_dir 就是上传文件的目标目录
PS 另外一些get_server_var的信息参考http://stackoverflow.com/questions/18478053/how-do-i-change-the-default-upload-path-for-jquery-file-upload
上传图片============================================================
Add files delete必需
jquery.fileupload-process.js jquery.fileupload-ui.js jquery.fileupload.js main.js
非必须
validate不是必需 它是用来检测文件大小 格式的的合法性的
app.js audio video transport
image -----没有image可以上传 只是在选择文件后没有上传前这个时候 没有缩略图
jQuery File Upload 插件 php代码分析的更多相关文章
- JQuery File Upload 插件 出现 “empty file upload result” 错误的解决方案。
本例中采用的是 JQuery File Upload + ASP.NET 的方式, Google了大半天基本没有找到合理的解决方案,倒是在 NodeJS的一遍博客中找到了灵感:http://www.i ...
- jquery file upload + asp.net 异步多文件上传
百度了很久,国内一直 找不到 使用jquery file upload 插件 +asp.net 的相关代码 一开始使用 jquery uploadify ,一款基于 flash的插件,但是不支持 Sa ...
- jQuery File Upload文件上传插件简单使用
前言 开发过程中有时候需要用户在前段上传图片信息,我们通常可以使用form标签设置enctype=”multipart/form-data” 属性上传图片,当我们点击submit按钮的时候,图片信息就 ...
- jQuery File Upload 文件上传插件使用一 (最小安装 基本版)
jQuery File Upload 是一款非常强大的文件上传处理插件,支持多文件上传,拖拽上传,进度条,文件验证及图片音视频预览,跨域上传等等. 可以说你能想到的功能它都有.你没想到的功能它也有.. ...
- jquery file upload 文件上传插件
1. jquery file upload 下载 jquery file upload Demo 地址:https://blueimp.github.io/jQuery-File-Upload/ jq ...
- jQuery File Upload 单页面多实例的实现
jQuery File Upload 的 GitHub 地址:https://github.com/blueimp/jQuery-File-Upload 插件描述:jQuery File Upload ...
- 用jQuery File Upload做的上传控件demo,支持同页面多个上传按钮
需求 有这么一个需求,一个form有多个文件要上传,但又不是传统的图片批量上传那种,是类似下图这种需求,一开始是用的swfupload做的上传,但是问题是如果有多个按钮的话,就要写很多重复的代码,于为 ...
- jQuery File Upload的使用
jQuery File Upload 是一个Jquery文件上传组件,支持多文件上传.取消.删除,上传前缩略图预览.列表显示图片大小,支持上传进度条显示等,以下就介绍一下该插件的简单使用 1.需要加载 ...
- jquery file upload示例
原文链接:http://blog.csdn.net/qq_37936542/article/details/79258158 jquery file upload是一款实用的上传文件插件,项目中刚好用 ...
随机推荐
- ThreadPool.QueueUserWorkItem的性能问题
在WEB开发中,为了降低页面等待时间提高用户体验,我们往往会把一些浪费时间的操作放到新线程中在后台执行. 简单的实现代码就是: //代码一 new Thread(()=>{ //do somet ...
- 关于虚拟机装kali-linux的联网问题
我用的是VMware Workstation11,近期装了一个kali-linux,想玩一下password破解.没想到装上之后网络连接显示的是活跃的却无法上网,我试过桥接等其他方式去联网,却依然无法 ...
- asp.net MVC Razor 语法(2)
变量是用于存储数据的命名实体. 变量 变量用于存储数据. 变量名必须以字母字符开头,不能包含空格和保留字符. 变量可以是某个具体的类型,指示其所存储的数据类型.字符串变量存储字符串值 ("W ...
- android入门——UI(5)
最近时间实在匆忙,博客的代码基本没有解释. 介绍ExpandableListView <?xml version="1.0" encoding="utf-8&quo ...
- Javascript知识——事件
O(∩_∩)O~~又是新的一周开始了,今天还是在继续学习Javascript知识,今天主要讲了事件的知识.现在就总结下吧. 事件 事件一般是用于浏览器和用户操作进行交互.最早是 IE 和 Netsca ...
- win7(32 bit) + IE8 环境,IE8无法弹窗(错误提示:“此网页上的错误可能会使它无法正确运行”),有关的系统注册信息损坏——解决方法
错误截图如下: IE有关的系统注册信息损坏,导致IE无法正常弹窗. 解决办法:重新注册与IE有关的DLL文件,具体如下: 1.以管理员身份运行附件脚本(新建txt文件,将下面代码复制到txt文 ...
- Oracle分析函数之开窗子句-即WINDOWING子句
Oracle的分析函数,对我们进行统计有很大的帮助,可以避免一些子查询等操作,在统计中,我们对开窗函数的接触较少,下面主要介绍下开窗函数的使用; http://www.itpub.net/thread ...
- B - Moving Tables
B - Moving Tables Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u S ...
- BZOJ 1176: [Balkan2007]Mokia( CDQ分治 + 树状数组 )
考虑cdq分治, 对于[l, r)递归[l, m), [m, r); 然后计算[l, m)的操作对[m, r)中询问的影响就可以了. 具体就是差分答案+排序+离散化然后树状数组维护.操作数为M的话时间 ...
- MyEclipse中设置智能提示
在实际的开发当中,编译器没有智能提示,确实是效率很低,下面我就给大家讲一下在MyEclipse中设置智能提示,方便大家的开发,希望能帮到大家. 方法一:首先,在MyEclipse的菜单栏中找到wind ...