UploadPreview
var uploader = new UploadPreview({
swf: "Uploader.swf",//Uploader.swf文件的路径
url: "upload.php",//图片上传到后端的地址
previewInfo: {//预览参数配置
previewWrap: ".file-list"//包裹所有预览图片的父级元素
},
btns: {//按钮配置
// 指定选择文件的按钮容器,选择器支持 id, class, dom。
chooseBtn: document.getElementById("choose_file"),
//选择文件按钮显示的文字
chooseBtnText: "选择图片",
}
});
效果演示 新标签查看
参数配置
-
swf
{string} [必填] [默认: "Uploader.swf"] Uploader.swf文件的路径,如果该路径填写不正确则在IE9及以下浏览器不能预览及上传文件! -
url
{string} [必填] [默认: "upload.php"] 文件上传到后端的URL -
fileVal
{string} [可选] [默认: "file"] 文件上传域的name,即后端接收文件的名称 -
method
{string} [可选] [默认: "post"] 上传文件时的请求类型 -
pictureOnly
{Boolean} [可选] [默认: true] 是否只能选择图片,若设置为true则用户在选择文件时就只能选择图片,不能选择其他类型的文件。若设置为false则允许用户选择其他类型的文件 设置了pictureOnly为true后,设置accept无效 -
multiple
{Boolean} [可选] [默认: true] 是否允许选择、上传多张图片 -
auto
{Boolean} [可选] [默认: false] 是否自动上传文件,若设置为true则在用户选定文件后立即上传该文件 -
datas
{Object} [可选] [默认: null] 上传时需要给文件添加的额外参数,若设置了参数则每一个文件在上传时都会将datas
里面的数据传递给后台 -
header
{Object} [可选] [默认: {}] 上传时携带给后台的自定义header -
threads
{int} [可选] [默认: 3] 上传并发数。允许同时最大上传进程数。 -
previewInfo
预览框相关配置-
width
{int} [可选] [默认: -1] 预览框的宽度,。如果不设置或设置为-1,则默认为预览框渲染的宽度 -
height
{int} [可选] [默认: -1] 预览框的高度度,如果不设置或设置为-1,则默认为预览框渲染的高度 -
viewImgHorizontal
{Boolean} [可选] [默认: true] 预览图对于预览框是否水平垂直居中,如果值为false则预览图的position默认为static, 如果值为true则预览图的position为absolute。最终它的css为._filelist .preview-box img{ position: aboslute; top: 50%; left: 50%; margin-top: -图片自身高度的一半; margin-left: -图片自身宽度的一半; }
-
previewClass
{string} [可选] [默认: ""] 需要添加在预览框上的class类名, -
previewElement
{string} [可选] [默认: div] 预览框的元素类型 -
showToolBtn
{Boolean} [可选] [默认: true] 是否在预览框中显示工具按钮,默认为true。工具按钮包括左旋转、右旋转、删除,如果选择的文件不是图片则只有删除按钮。如果设置为true,则当鼠标经过预览框时工具按钮会显示,离开时自动隐藏 -
new
toolBtnShowOnUpload
{Boolean} [可选] [默认: false] 工具按钮在图片上传成功后(请求成功,并不代表图片真正已经存储到服务器了)是否显示,默认为false。如果图片上传完成后,你要实现点击"删除"按钮发送一条删除图片的ajax请求,然后删除图片的效果,那么可以设置这个参数为true -
onlyDel
{Boolean} [可选] [默认: false] 工具按钮中是否只生成"删除"按钮 -
previewWrap
{Selector、dom、jQuery Object} [必填] [默认: null] 包裹预览框的父级元素,该参数为必填项,如果不填写则生成的预览框显示不了 -
new
errorTipShow
{boolean} [可选] [默认: true] 图片上传失败后是否显示上传失败的提示,默认为显示 -
errorMsg
{string} [可选] [默认: "上传失败,"] 上传请求失败时的提示信息,如下图白色圈起的部分
-
delBtn
{string} [可选] [默认: "删除"] 工具按钮中"删除"按钮的文字,若值为-1则不会创建该按钮,如下图白色部分
-
retryBtn
{string} [可选] [默认: "重试"] 工具按钮中"重试"按钮的文字,若值为-1则不会创建该按钮,如下图白色部分
-
changeUploadBtnText
{Boolean} [可选] [默认: true] 在上传过程中是否改变"开始上传"按钮的文字,如果按钮文字从"开始上传"变成了"暂停上传",再次点击按钮就会暂停上传。如果文字从"暂停上传"变成了"继续上传",再次点击按钮就会继续上传 -
pauseText
{string} [可选] [默认: "暂停上传"] 该参数必须在changeUploadBtnText
参数为true
时才会有效。当"开始上传"按钮文字从"开始上传"变为"暂停上传"时,"暂停上传"文字就是使用pauseText
-
continueText
{string} [可选] [默认: "暂停上传"] 该参数必须在changeUploadBtnText
参数为true
时才会有效。当"开始上传"按钮文字从"暂停上传"变为"继续上传"时,"继续上传"文字就是使用continueText
-
-
new
drag
拖拽上传相关配置-
dnd
{Selector、dom、jQuery Object} [必填] [默认: null] 如果不传递则不会启动拖拽上传功能 -
disableGlobalDnd
{boolean} [可选] [默认: false] 是否禁掉整个页面的拖拽功能,如果不禁用,图片拖进来的时候会默认被浏览器打开。 -
paste
{Selector、dom、jQuery Object} [可选] [默认: null] 指定监听paste事件的容器,如果不指定,不启用此功能。此功能为通过粘贴来添加截屏的图片。建议设置为document.body.
-
-
btns
按钮相关设置-
chooseBtn
{Selector、dom、jQuery Object} [必填] [默认: null] 选择文件的按钮 -
chooseBtnText
{string} [可选] [默认: "选择图片"] 选择文件按钮的文字 -
uploadBtn
{Selector、dom、jQuery Object} [可选] [默认: null] 上传文件的按钮 -
retryBtn
{Selector、dom、jQuery Object} [可选] [默认: null] 重新上传的按钮 -
chooseBtnCanUseOnFinish
{Boolean} [可选] [默认: true] 当所有文件上传结束后"选择文件"按钮是否可用 查看demo -
uploadBtnCanUsOnFinish
{Boolean} [可选] [默认: true] 当所有文件上传结束后"开始上传"按钮是否可用 查看demo
-
-
ignore
指定排除哪些类型的文件 查看demo-
extensions
{string} [可选] [默认: ""] 排除指定后缀名的文件,多个后缀名按,
隔开。如:js,html,css
、.php,.class,.cs
-
mimeTypes
{string} [可选] [默认: ""] 排除指定MIME类型的文件,多个MIME类型名按,
隔开。如:application/A2L,application/pdf
-
-
accept
特别允许上传哪些类型的文件 查看demo-
extensions
{string} [可选] [默认: ""] 指定允许特别上传哪些后缀名的文件,多个后缀名按,
隔开。如:js,html,css
、.php,.class,.cs
-
mimeTypes
{string} [可选] [默认: ""] 指定允许特别上传哪些MIME类型的文件,多个MIME类型名按,
隔开。如:application/A2L,application/pdf
- 设置了pictureOnly为true后,设置accept无效
-
-
sendAsBlob
{Boolean} [可选] [默认: false] 是否以二进制流的形式发送 -
compress
{Boolean} [可选] [默认: false] 图片在上传前是否进行压缩,默认不进行压缩 -
duplicate
{Boolean} [可选] [默认: false] 单个文件是否可以重复多次上传,即一个文件上传成功后是否可以再次上传 -
maxFileNum
{int} [可选] [默认: 50] 最大上传文件个数 -
maxFileSize
{int} [可选] [默认: 5242880(B)] 单个文件体积最大大小,默认5242880 Bite,即5M -
maxFileTotalSize
{int} [可选] [默认: 524288000(B)] 所有文件体积最大大小,默认524288000 Bite,即500M
事件说明
事件名 | 参数说明 | 描述 |
---|---|---|
beforeFileQueued 1.1.0 new
|
|
在文件被加入队列之前触发。如果该函数返回false,则文件不会被加入队列。
此方法可以用来实现自定义上传文件的类型。demo |
fileQueued
|
|
当文件被加入队列以后触发。即当选择了文件后会执行该函数 |
fileDequeued
|
|
当文件被移出队列以后触发。可以理解为删除文件时触发 |
uploadStart
|
文件开始上传时触发的函数(多个文件只会执行一次) | |
uploadComplete
|
|
当文件单个上传完成后触发(不管成功或失败) |
uploadSuccess
|
|
当上传成功(此处的上传成功指的是上传图片请求成功,并非图片真正上传到服务器)后所执行的函数 |
uploadError
|
|
当单个文件上传出错时触发 |
uploadFinish
|
所有文件上传都结束时触发的函数(多个文件只会执行一次) | |
error
|
|
当validate不通过时(如文件数量超出、文件大小超出、类型不匹配等等),会以派送错误事件的形式通知调用者。 |
onDel
|
|
当点击预览框中的"删除"按钮时所触发的函数,如果此函数返回false,则点击"删除"不会删除预览框及文件 |
1.1.0 newonDelUploaded
|
|
当点击预览框中的"删除"按钮时所触发的函数, 该函数必须在文件上传完成(只要请求成功就会触发)后才会触发 |
upload
- uploadPreview.upload() => 当前UploadPreview对象
上传文件
var uploadPreview = new UploadPreview({...});
$("#uploadBtn").on("click", function (){
uploadPreview.upload();
});
stop
- uploadPreview.stop() => 当前UploadPreview对象
暂停上传,调用stop()
后还在上传队列中等待上传的文件将不会继续上传,已经发送的请求不会停止
var uploadPreview = new UploadPreview({...});
$("#pauseBtn").on("click", function (){
uploadPreview.stop();
});
retry
- uploadPreview.retry() => 当前UploadPreview对象
- uploadPreview.retry( file ) => 当前UploadPreview对象
参数:
-
file
{WUFile} [可选]
重新上传,当文件上传出错后调用retry()
方法可以重新上传之前上传出错或失败的文件。不传参数默认重新上传所有上传出错或
失败的文件,如果传递了参数并且参数是一个WUFile对象则重新上传指定的文件
var uploadPreview = new UploadPreview({...});
$("#retryBtn").on("click", function (){
uploadPreview.retry();
});
destroy
- uploadPreview.destroy() => undefined
销毁webuploader实例
delete
- uploadPreview.delete(WUFileOrId) => 当前UploadPreview对象
删除指定文件。WUFileOrId可以是一个WUFile(文件)对象,也可以文件的id,id的值一般为:WU_FILE_x
,x
为数字。
调用delete()方法后会自动调用传递的fileDequeued
参数
refresh
- uploadPreview.refresh() => 当前UploadPreview对象
- uploadPreview.refresh(btn) => 当前UploadPreview对象
-
btn
{dom、jQuery Object} [可选]
重新渲染"选择文件"按钮。有时候我们的业务场景可能是在模态窗中选择文件,而模态窗默认是display: none
的,在这种情况下
如果在模态窗显示前初始化了webuploader(即new UploadPreview(...))
,则可能会出现"选择文件"按钮用不了的情况。如果是这种情况
那么可以调用refresh()
对按钮再次进行渲染 查看demo
var uploadPreview = new UploadPreview({...});
$("#refresh").on("click", function (){
uploadPreview.refresh();
//uploadPreview.refresh(document.getElementById("chooseBtn"));
});
disable
- uploadPreview.disable() => 当前UploadPreview对象
禁用"选择文件"按钮。禁用按钮后会给"选择文件"按钮添加.webuploader-pick-disable
class 类
enable
- uploadPreview.enable() => 当前UploadPreview对象
启用"选择文件"按钮
setData
- uploadPreview.setData() => 当前UploadPreview对象
-
WUFile
{WUFile} [必填] 该参数可以为WUFile对象或WUFile对象的id,传递这个参数后就可以给该文件设置额外参数 -
data
{Object} [必填] 该参数为需要添加到文件中的额外参数,该参数必须为一个对象,并且不能是伪数组、数组或window
给指定文件单独的设置需要上传到服务器端的额外参数。有时候我们在开发类似用户资料填写的功能的时候,需要先提交用户填写的文字信息,提交
完成后服务器端返回一个id,然后再上传图片的时候将这个id也传递给后端。setData()
方法就是为了解决这一需求的。
查看demo
setHeader
- uploadPreview.setHeader() => 当前UploadPreview对象
-
header
{Object} [必填] 该参数必须为一个对象,value必须为英文。
在上传文件之前动态的设置header信息。 查看demo
getFiles
- uploadPreview.getFiles() => 包含所有已选择的文件的对象,对象的键为
WUFile
的id,值为选择的文件(WUFile)
获取用户选择的所有文件
getStats
- uploadPreview.getStats() => 包含以下信息的对象
successNum
上传成功的文件数progressNum
上传中的文件数cancelNum
被删除的文件数invalidNum
无效的文件数uploadFailNum
上传失败的文件数queueNum
还在队列中的文件数interruptNum
被暂停的文件数
获取文件统计信息
getFileLength
- uploadPreview.getFileLength() => 当前用户选择的文件数量
获取选择的文件数量
calculateWh
- UploadPreview.calculateWh() => 返回一个包含width、height的对象
-
viewW
{int} [必填|可选] 预览的宽度。如果不知道预览的宽度直接赋值-1.如果viewW
为-1,则viewH
必须大于-1 -
viewH
{int} [必填|可选] 预览的宽度。如果不知道预览的高度直接赋值-1.如果viewH
为-1,则viewW
必须大于-1 -
imgW
{int} [必填] 图片或真实的宽度。 -
imgH
{int} [必填] 图片或真实的高度。
等比例计算宽高
setProgressWidth
- uploadPreview.setProgressWidth(ele,width) => 返回传递的ele
-
ele
{Selector、jQuery Object} [必填] 预览框 -
width
{int} [必填] 进度条的长度
设置预览框中进度条的长度