基于HTML5的可拖拽多文件上传插件
DImage
相关代码已经从 Dupload.js
在 2.2.0 版本中独立出去,具体查看DImage.js
CommonJS 方式引用
var Dupload = require('dupload');
AMD 方式引用
define(['dupload'], function(Dupload) { // ... });
全局方式,在HTML页面中引入:
<script src="dupload.min.js"></script>
注意:
dupload.js
中不包含 dimage.js
插件,无法使用 compress
功能,如需使用压缩请引入 dupload.min.js
提示:
上传多个文件时,file input要添加multiple属性。 android系统选择文件,file input要添加capture="camera"属性,才能打开相机。 未添加file控件html代码,且未指定fileInput参数,插件会自动生成一个图片选择控件。注意:
添加了file控件html代码,必须指定fileInput参数,否则会触发两次click
事件,出现2次文件选择器。
若使用了 FastClick
插件,__必须__在file控件父元素添加class needsclick
,否则container内部分甚至全部区域点击无效。
最新 Chrome
版本 52.0.2743.116 (64-bit)
, file的accept不兼容 image/*
, 点击后弹出会有10s左右延迟。
<div class="container" style="width: 200px; height:200px; border: 1px solid black;"> <input class="du-fileinput" type="file" accept="image/jpeg,image/jpg,image/png" capture="camera" style="display:none;" /> </div>
建议:
HTML中不添加file控制代码,由插件自动生成
Example:
var options = { url: "http://localhost/upload", fileInput: '.du-fileinput',// 可不写,自动生成并绑定事件 maxFilesize: 500, onProgress: function(du, file) { console.log(file.percent) }, onUploaded: function(du, file, response) { // your code to parse response // ... return false;// 不做处理 return true;// 触发onSuccess() return "error";// 触发onError() }, onSuccess: function(du, file, response) { console.log(file); }, onError: function(du, file, message) { alert(message); } } // 方法一: var du = new Dupload(".container", options);// 返回实例对象,可做更多操作 // 方法二: Dupload.create('.container', options); // 兼容方式 options.container = '.container' Dupload.create(options);// 静态方法 服务器端
数据返回格式没有要求,不过通常我们为了方便前端处理,都返回JSON格式。
参数参数 | 类型 | 默认值 | 说明 |
---|---|---|---|
构造参数 | |||
container | string or HTMLElement | 拖拽敏感区域 | |
params | object | {} | 可选参数 |
params参数 | |||
url | string | null | ajax上传地址 |
method | string | POST | 提交方式 |
withCredentials | boolean | false | 支持跨域发送cookies |
header | object | {} | 请求头部信息 |
formData | object | {} | 参数表,和上传请求同时发送 |
dataType | string | json | 返回数据类型: text, json |
fileVal | string | file | 文件上传域的name |
fileInput | string or HTMLElement | null | file控件css选择器, 若container里存在file控件,则必填。反之可不填,会自动生成一个图片控件 |
allowExts | string | null | 允许的文件类型, 格式: 扩展名[,扩展名], 如: jpeg,jpg,png,gif ,多个类型使用逗号, 隔开 |
allowMimeTypes | string | null | 允许的Mime类型, 格式: mime[,mime], 如: image/* ,多个类型使用逗号, 隔开 |
maxFilesize | int | 8192 | 单个文件限制,单位: KB,默认:8M |
maxFiles | int | null | 最大上传数 |
parallelUploads | int | 2 | 并行上传量,在进行多文件同时上传时的并发量 |
auto | boolean | true | 自动上传,选择文件后自动执行上次文件动作 |
multi | boolean | true | 允许多文件上传,头像修改建议设为false,或者将file input的multiple去掉 |
init | boolean | true | 默认初始化 |
clickable | boolean | true | 拖拽敏感区域是否可点击 |
compress | object | false | 是否启用压缩功能,具体配置详见DImage.js |
提示文字(Tips Text) | |||
txtFileTooBig | string | 文件上传限制最大为{{maxFilesize}}. | 文件大小超过限制 |
txtInvalidFileType | string | 不允许的文件类型 | 文件类型不允许 |
txtMaxFilesExceeded | string | 最多能上传{{maxFiles}}个文件 | |
txtCancelUploadTips | string | “您确定要取消上传吗? | |
回调函数(Callback) | |||
onDragHover | function() | 文件拖放。 【注意】dragover事件一定要清除默认事件,不然会无法触发后面的drop事件 |
|
onDragOver | function() | 拖拽到敏感区域 | |
onDragLeave | function() | 离开敏感区域 | |
onDrop | function(du, file) | 文件选择后 | |
onBefore | function(du, file) | 上传之前 | |
onProgress | function(du, file) | 上传进度 | |
onUploaded | function(du, file, response) | 上传完毕。 【注意】不同返回值会回调不同函数: return false;// 不处理 return true;// 会调用onSuccess() return "error";// 会调用onError()
|
|
onSuccess | function(du, file, response) | 上传成功 | |
onError | function(du, file, response) | 上传失败 | |
onCancel | function(du, file) | 上传取消 | |
onDelete | function(du, file) | 文件删除 | |
onComplete | function(du) | 文件全部上传完毕 | |
file对象数据结构 | |||
file | object | 文件对象数据结构,例如: {id: "kQtmYe2Mi07w0Z-T67cTzMmHixHB3Chx", name: "example.jpg", percent: "100.00", size: 8172, src: "", status: "success", type: "image/jpeg"} |
|
外部方法 | |||
select | function() | 文件选择,如果容器clickable=false ,可手动调用此方法,触发fileinput的click事件 |
|
start | function() | 上传开始,如果参数auto 为false 时,需要手动调用此方法 |
|
delete | function(id) | 删除文件,参数id 是file.id |
|
setOption | function(option, value) | 参数设置,支持3种形式:setOption('name', 'value') setOption('name', {key: value}) setOption({key: value, key2: {}})
|
DImage
相关代码,将图片压缩、翻转操作独立为一个组件 DImage.js
2.1.1 - 2017/03/28
修复360浏览器无法获取MIME类型时,会压缩非图片文件的BUG
2.1.0 - 2017/03/20
新增 compress
参数,使用HTML5进行JPEG图片压缩
修改 maxFilesize
参数,默认值为8M
移除移动端浏览器检测函数
2.0.1 - 2016/12/21
调整部分代码
修复上传数量限制计算不准确的Bug
2.0.0 - 2016/12/20
新名字 Dupload.js
新增 Dupload.create(container, params)
静态方法
替换参数 requestHeaders
=> headers
, formParams
=> 'formData', fileDataName
=> fileVal
整理所有外部方法到新增的Util类中
修复部分Bug
1.5.4 - 2016/08/29
新增 dataType
可选参数。
新增 select()
外部方法,用于触发 fileinput
的click事件。
1.5.3 - 2016/08/19
修复 Chrome
版本 52.0.2743.116 (64-bit)
, fileinput
点击触发后弹出有10s左右延迟的问题。
1.5.2 - 2016/07/15
修复 delete()
方法,在 files
中找不到等于id的文件,会删除最后一个文件的BUG。
修改 uploadFile(), setOption(), formatSize(), getSuffix(), guid()
5个方法。
修改 init()
方法,自动生成的文件选择器会依赖 multi
, allowMimeTypes
参数。
替换 multipart_params
参数为 formParams
。
新增 requestHeaders
, allowMimeTypes
2个可选参数。
1.5.1 - 2016/05/29
移除兼容旧版FastClick单击无效果的代码。
1.5.0 - 2016/05/25
插件不再处理上传结果,直接调用onUploaded()由用户处理。
1.4.0 - 2016/04/08
调整大量代码结构。
上传完成后,如果是JSON会自动处理结果,否则直接调用onSuccess()函数由用户处理。
新增onBefore()回调函数,便于上传之前修改参数。
新增setOption()方法。
版权声明:
1、该文章(资料)来源于互联网公开信息,我方只是对该内容做点评,所分享的下载地址为原作者公开地址。2、网站不提供资料下载,如需下载请到原作者页面进行下载。