webuploader 获取文件md5_WebUploader API文档

WebUploader 是一个强大的文件上传组件,支持通过AMD规范组织模块。Uploader类是上传的入口,可以通过new Uploader()初始化。参数包括swf路径、分片上传配置等。事件包括文件添加、上传开始、上传结束等,提供md5File方法用于计算文件MD5值。此外,可以通过addFiles添加文件,removeFile移除文件,sort排序文件,以及控制上传和暂停。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Web Uploader内部类的详细说明,以下提及的功能类,都可以在WebUploader这个变量中访问到。

As you know, Web Uploader的每个文件都是用过AMD规范中的define组织起来的, 每个Module都会有个module id. 默认module id为该文件的路径,而此路径将会转化成名字空间存放在WebUploader中。如:

module base:WebUploader.Base

module file: WebUploader.File

module lib/dnd: WebUploader.Lib.Dnd

module runtime/html5/dnd: WebUploader.Runtime.Html5.Dnd

以下文档中对类的使用可能省略掉了WebUploader前缀。

Uploader

new Uploader( opts ) ⇒ Uploader

上传入口类。

var uploader = WebUploader.Uploader({

swf: 'path_of_swf/Uploader.swf',

// 开起分片上传。

chunked: true

});

参数说明

dnd {Selector} [可选] [默认值:undefined]

指定Drag And Drop拖拽的容器,如果不指定,则不启动。

disableGlobalDnd {Selector} [可选] [默认值:false]

是否禁掉整个页面的拖拽功能,如果不禁用,图片拖进来的时候会默认被浏览器打开。

paste {Selector} [可选] [默认值:undefined]

指定监听paste事件的容器,如果不指定,不启用此功能。此功能为通过粘贴来添加截屏的图片。建议设置为document.body.

pick {Selector, Object} [可选] [默认值:undefined]

指定选择文件的按钮容器,不指定则不创建按钮。

id {Seletor|dom} 指定选择文件的按钮容器,不指定则不创建按钮。注意 这里虽然写的是 id, 但是不是只支持 id, 还支持 class, 或者 dom 节点。

label {String} 请采用 innerHTML 代替

innerHTML {String} 指定按钮文字。不指定时优先从指定的容器中看是否自带文字。

multiple {Boolean} 是否开起同时选择多个文件能力。

accept {Arroy} [可选] [默认值:null]

指定接受哪些类型的文件。 由于目前还有ext转mimeType表,所以这里需要分开指定。

title {String} 文字描述

extensions {String} 允许的文件后缀,不带点,多个用逗号分割。

mimeTypes {String} 多个用逗号分割。

如:

{

title: 'Images',

extensions: 'gif,jpg,jpeg,bmp,png',

mimeTypes: 'image/*'

}

thumb {Object} [可选]

配置生成缩略图的选项。

默认为:

{

width: 110,

height: 110,

// 图片质量,只有type为`image/jpeg`的时候才有效。

quality: 70,

// 是否允许放大,如果想要生成小图的时候不失真,此选项应该设置为false.

allowMagnify: true,

// 是否允许裁剪。

crop: true,

// 为空的话则保留原有图片格式。

// 否则强制转换成指定的类型。

type: 'image/jpeg'

}

compress {Object} [可选]

配置压缩的图片的选项。如果此选项为false, 则图片在上传前不进行压缩。

默认为:

{

width: 1600,

height: 1600,

// 图片质量,只有type为`image/jpeg`的时候才有效。

quality: 90,

// 是否允许放大,如果想要生成小图的时候不失真,此选项应该设置为false.

allowMagnify: false,

// 是否允许裁剪。

crop: false,

// 是否保留头部meta信息。

preserveHeaders: true,

// 如果发现压缩后文件大小比原来还大,则使用原来图片

// 此属性可能会影响图片自动纠正功能

noCompressIfLarger: false,

// 单位字节,如果图片大小小于此值,不会采用压缩。

compressSize: 0

}

auto {Boolean} [可选] [默认值:false]

设置为 true 后,不需要手动调用上传,有文件选择即开始上传。

runtimeOrder {Object} [可选] [默认值:html5,flash]

指定运行时启动顺序。默认会想尝试 html5 是否支持,如果支持则使用 html5, 否则则使用 flash.

可以将此值设置成 flash,来强制使用 flash 运行时。

prepareNextFile {Boolean} [可选] [默认值:false]

是否允许在文件传输时提前把下一个文件准备好。 对于一个文件的准备工作比较耗时,比如图片压缩,md5序列化。 如果能提前在当前文件传输期处理,可以节省总体耗时。

chunked {Boolean} [可选] [默认值:false]

是否要分片处理大文件上传。

chunkSize {Boolean} [可选] [默认值:5242880]

如果要分片,分多大一片? 默认大小为5M.

chunkRetry {Boolean} [可选] [默认值:2]

如果某个分片由于网络问题出错,允许自动重传多少次?

threads {Boolean} [可选] [默认值:3]

上传并发数。允许同时最大上传进程数。

formData {Object} [可选] [默认值:{}]

文件上传请求的参数表,每次发送都会发送此对象中的参数。

fileVal {Object} [可选] [默认值:'file']

设置文件上传域的name。

method {Object} [可选] [默认值:'POST']

文件上传方式,POST或者GET。

sendAsBinary {Object} [可选] [默认值:false]

是否已二进制的流的方式发送文件,这样整个上传内容php://input都为文件内容, 其他参数在$_GET数组中。

fileNumLimit {int} [可选] [默认值:undefined]

验证文件总数量, 超出则不允许加入队列。

fileSizeLimit {int} [可选] [默认值:undefined]

验证文件总大小是否超出限制, 超出则不允许加入队列。

fileSingleSizeLimit {int} [可选] [默认值:undefined]

验证单个文件大小是否超出限制, 超出则不允许加入队列。

duplicate {Boolean} [可选] [默认值:undefined]

去重, 根据文件名字、文件大小和最后修改时间来生成hash Key.

disableWidgets {String, Array} [可选] [默认值:undefined]

默认所有 Uploader.register 了的 widget 都会被加载,如果禁用某一部分,请通过此 option 指定黑名单。

事件说明

事件名参数说明描述

dndAccept

items{DataTransferItemList}

DataTransferItem

阻止此事件可以拒绝某些类型的文件拖入进来。目前只有 chrome 提供这样的 API,且只能通过 mime-type 验证。

beforeFileQueued

file {File}

File对象

当文件被加入队列之前触发,此事件的handler返回值为false,则此文件不会被添加进入队列。

fileQueued

file {File}

File对象

当文件被加入队列以后触发。

filesQueued

files {File}

数组,内容为原始File(lib/File)对象。

当一批文件添加进队列以后触发。

fileDequeued

file {File}

File对象

当文件被移除队列后触发。

reset

当 uploader 被重置的时候触发。

startUpload

当开始上传流程时触发。

stopUpload

当开始上传流程暂停时触发。

uploadFinished

当所有文件上传结束时触发。

uploadStart

file {File}

File对象

某个文件开始上传前触发,一个文件只会触发一次。

uploadBeforeSend

object {Object}

data {Object}

默认的上传参数,可以扩展此对象来控制上传参数。

headers {Object}

可以扩展此对象来控制上传头部。

当某个文件的分块在发送前触发,主要用来询问是否要添加附带参数,大文件在开起分片上传的前提下此事件可能会触发多次。

uploadAccept

object {Object}

ret {Object}

服务端的返回数据,json格式,如果服务端不是json格式,从ret._raw中取数据,自行解析。

当某个文件上传到服务端响应后,会派送此事件来询问服务端响应是否有效。如果此事件handler返回值为false, 则此文件将派送server类型的uploadError事件。

uploadProgress

file {File}

File对象

percentage {Number}

上传进度

上传过程中触发,携带上传进度。

uploadError

file {File}

File对象

reason {String}

出错的code

当文件上传出错时触发。

uploadSuccess

file {File}

File对象

response {Object}

服务端返回的数据

当文件上传成功时触发。

uploadComplete

file {File} [可选]

File对象

不管成功或者失败,文件上传完成时触发。

error

type {String}

错误类型。

当validate不通过时,会以派送错误事件的形式通知调用者。通过upload.on('error', handler)可以捕获到此类错误,目前有以下错误会在特定的情况下派送错来。

Q_EXCEED_NUM_LIMIT 在设置了fileNumLimit且尝试给uploader添加的文件数量超出这个值时派送。

Q_EXCEED_SIZE_LIMIT 在设置了Q_EXCEED_SIZE_LIMIT且尝试给uploader添加的文件总大小超出这个值时派送。

Q_TYPE_DENIED 当文件类型不满足时触发。。

option

option( key ) ⇒ *

option( key, val ) ⇒ self

获取或者设置Uploader配置项。

// 初始状态图片上传前不会压缩

var uploader = new WebUploader.Uploader({

compress: null;

});

// 修改后图片上传前,尝试将图片压缩到1600 * 1600

uploader.option( 'compress', {

width: 1600,

height: 1600

});

getStats

getStats() ⇒ Object

获取文件统计信息。返回一个包含一下信息的对象。

successNum 上传成功的文件数

progressNum 上传中的文件数

cancelNum 被删除的文件数

invalidNum 无效的文件数

uploadFailNum 上传失败的文件数

queueNum 还在队列中的文件数

interruptNum 被暂停的文件数

destroy

destroy() ⇒ undefined

销毁 webuploader 实例

addButton

addButton( pick ) ⇒ Promise

添加文件选择按钮,如果一个按钮不够,需要调用此方法来添加。参数跟options.pick一致。

uploader.addButton({

id: '#btnContainer',

innerHTML: '选择文件'

});

makeThumb

makeThumb( file, callback ) ⇒ undefined

makeThumb( file, callback, width, height ) ⇒ undefined

生成缩略图,此过程为异步,所以需要传入callback。 通常情况在图片加入队里后调用此方法来生成预览图以增强交互效果。

当 width 或者 height 的值介于 0 - 1 时,被当成百分比使用。

callback中可以接收到两个参数。

第一个为error,如果生成缩略图有错误,此error将为真。

第二个为ret, 缩略图的Data URL值。

注意 Date URL在IE6/7中不支持,所以不用调用此方法了,直接显示一张暂不支持预览图片好了。 也可以借助服务端,将 base64 数据传给服务端,生成一个临时文件供预览。

uploader.on( 'fileQueued', function( file ) {

var $li = ...;

uploader.makeThumb( file, function( error, ret ) {

if ( error ) {

$li.text('预览错误');

} else {

$li.append('<img alt="" src="' + ret + '" />');

}

});

});

md5File

md5File( file[, start[, end]] ) ⇒ promise

计算文件 md5 值,返回一个 promise 对象,可以监听 progress 进度。

uploader.on( 'fileQueued', function( file ) {

var $li = ...;

uploader.md5File( file )

// 及时显示进度

.progress(function(percentage) {

console.log('Percentage:', percentage);

})

// 完成

.then(function(val) {

console.log('md5 result:', val);

});

});

addFiles

addFiles( file ) ⇒ undefined

addFiles( [file1, file2 ...] ) ⇒ undefined

参数:

files {Array of File or File} [可选]

Files 对象 数组

添加文件到队列

removeFile

removeFile( file ) ⇒ undefined

removeFile( id ) ⇒ undefined

removeFile( file, true ) ⇒ undefined

removeFile( id, true ) ⇒ undefined

参数:

file {File, id}

File对象或这File对象的id

移除某一文件, 默认只会标记文件状态为已取消,如果第二个参数为 true 则会从 queue 中移除。

$li.on('click', '.remove-this', function() {

uploader.removeFile( file );

})

getFiles

getFiles() ⇒ Array

getFiles( status1, status2, status... ) ⇒ Array

返回指定状态的文件集合,不传参数将返回所有状态的文件。

console.log( uploader.getFiles() ); // => all files

console.log( uploader.getFiles('error') ) // => all error files.

retry

retry() ⇒ undefined

retry( file ) ⇒ undefined

重试上传,重试指定文件,或者从出错的文件开始重新上传。

function retry() {

uploader.retry();

}

sort

sort( fn ) ⇒ undefined

排序队列中的文件,在上传之前调整可以控制上传顺序。

reset

reset() ⇒ undefined

重置uploader。目前只重置了队列。

uploader.reset();

predictRuntimeType

predictRuntimeType() ⇒ String

预测Uploader将采用哪个Runtime

upload

upload() ⇒ undefined

upload( file | fileId) ⇒ undefined

开始上传。此方法可以从初始状态调用开始上传流程,也可以从暂停状态调用,继续上传流程。

可以指定开始某一个文件。

stop

stop() ⇒ undefined

stop( true ) ⇒ undefined

stop( file ) ⇒ undefined

暂停上传。第一个参数为是否中断上传当前正在上传的文件。

如果第一个参数是文件,则只暂停指定文件。

cancelFile

cancelFile( file ) ⇒ undefined

cancelFile( id ) ⇒ undefined

参数:

file {File, id}

File对象或这File对象的id

标记文件状态为已取消, 同时将中断文件传输。

$li.on('click', '.remove-this', function() {

uploader.cancelFile( file );

})

isInProgress

isInProgress() ⇒ Boolean

判断Uplaoder是否正在上传中。

skipFile

skipFile( file ) ⇒ undefined

掉过一个文件上传,直接标记指定文件为已上传状态。

request

request( command, args ) ⇒ * | Promise

request( command, args, callback ) ⇒ Promise

发送命令。当传入callback或者handler中返回promise时。返回一个当所有handler中的promise都完成后完成的新promise。

Uploader.register

Uploader.register(proto);

Uploader.register(map, proto);

参数:

responseMap {object}

API 名称与函数实现的映射

proto {object}

组件原型,构造函数通过 constructor 属性定义

添加组件

Uploader.register({

'make-thumb': 'makeThumb'

}, {

init: function( options ) {},

makeThumb: function() {}

});

Uploader.register({

'make-thumb': function() {

}

});

Uploader.unRegister

Uploader.unRegister(name);

参数:

name {string}

组件名字

删除插件,只有在注册时指定了名字的才能被删除。

Uploader.register({

name: 'custom',

'make-thumb': function() {

}

});

Uploader.unRegister('custom');

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值