WebUploader是由Baidu的前端团队开发的一款基于HTML5的多文件上传插件,广泛应用于各类网站及web应用的文件上传功能中。WebUploader具有高度可定制化,简单易用,支持多种上传方式以及众多的特性。本文将为大家详细介绍如何使用WebUploader及一些注意事项。
一、基本使用
1. 引入WebUploader插件和相关css、js文件
首先,需要在网页中引入WebUploader插件和相关的css、js文件。可以使用CDN方式引入,如:
```
```
2. 初始化WebUploader
在html中加入input元素
```
```
其中id为filePicker,这个id可以帮助我们在JS中调用元素。
然后,我们需要使用JS来初始化WebUploader:
```
var uploader = WebUploader.create({
auto: true, // 自动上传。
swf: 'Uploader.swf', // swf文件路径
server: 'file_upload.php', // 文件接收服务端。
pick: '#filePicker', // 选择文件的按钮
resize: false // 不压缩image, 默认如果是jpeg,文件上传前会压缩一把再上传
});
```
其中,auto表示是否自动上传,swf表示swf文件路径,server表示文件接收服务的地址,pick表示选择文件的按钮。
3. 上传文件
WebUpdater支持不同类型的上传方式,如单个文件上传、同时上传多个文件、拖拽上传等等。以单个文件上传为例,JS代码如下:
```
var uploader = WebUploader.create({
auto: true,
swf: 'Uploader.swf',
server: 'file_upload.php',
pick: '#filePicker',
resize: false,
accept: {
extensions: 'gif,jpg,jpeg,bmp,png'
}
});
uploader.on( 'fileQueued', function( file ) {
console.log(file.name + '已加入上传队列');
});
uploader.on( 'uploadProgress', function( file, percentage ) {
console.log('上传' + file.name + ':' + percentage*100 +'%');
});
uploader.on( 'uploadSuccess', function( file ) {
console.log(file.name + '上传成功');
});
uploader.on( 'uploadError', function( file, reason ) {
console.log(file.name + '上传失败,原因:' + reason);
});
uploader.on( 'uploadComplete', function( file ) {
console.log(file.name + '上传完成');
});
```
其中,uploader.on函数可以监听上传事件,如fileQueued、uploadProgress、uploadSuccess、uploadError等等。这些事件可帮助您更好地处理上传结果。
二、优化方案
1. 断点续传
断点续传是指文件上传过程中网络或其他因素导致上传中断,通过记录上传进度等信息,再次进行上传可无需从头开始,而是从上次中断处继续上传。这是文件上传中必要的优化方案之一,WebUploader也提供了此方案。
```
var uploader = WebUploader.create({
// ...
chunked: true, // 分片上传
chunkSize: 5 * 1024 * 1024, // 每片5M大小
chunkRetry: 5, // 上传失败后重试次数
threads: 3, // 最大并发数
duplicate: true, // 允许重复上传相同文件
// ...
});
```
其中,chunked参数表示开启分片上传,其余参数均为优化断点续传的方案。
2. 压缩图片
在WebUploader中,可以对图片进行压缩,以减小文件大小,降低上传时间。
```
var uploader = WebUploader.create({
// ...
resize: true,
compress: {
width: 1600,
height: 1600,
// 图片质量,范围为0-100
quality: 90,
// 大小压缩后,超过此大小进行压缩,单位为字节
compressSize: 1024 * 1024
},
// ...
});
```
其中,width、height为压缩后的图片尺寸,quality为图片质量,compressSize为压缩后的图片大小,单位为字节。通过该参数您可以适当地调整图片大小。
三、总结
WebUploader是一款非常实用的多文件上传插件,其具有丰富的上传功能以及强大的定制化能力。本文通过简单的示例代码,详细阐述了WebUploader的基本使用方法以及一些优化方案。希望本文能对您在开发中使用WebUploader时有所帮助。