返回
踩坑Webuploader视频上传
前端
2023-10-23 21:47:33
前言
由于我们公司的业务需要,我们必须开发一个兼容IE8+浏览器的视频上传功能,并且还支持多选断点上传。经过一番调研,我们选择了百度WebFE(FEX)团队开发的WebUploader文件上传插件来实现此业务功能。
准备工作
首先,我们需要准备一下DOM结构,它包含存放文件信息的容器、选择按钮和上传按钮三个部分。结构如下:
<div id="uploader">
<div class="queueList">
<div id="dndArea" class="placeholder">
<div id="filePicker"></div>
<p>或将照片拖到这里,开始上传</p>
</div>
</div>
<div class="statusBar">
<div class="progress">
<span class="text">0%</span>
<span class="percentage"></span>
</div>
<div class="info"></div>
<div class="btns">
<div id="filePicker2"></div>
<div class="uploadBtn">开始上传</div>
</div>
</div>
</div>
使用WebUploader进行视频上传
接下来,我们就可以开始使用WebUploader进行视频上传了。首先,我们需要引入WebUploader的JS和CSS文件:
<script src="webuploader.min.js"></script>
<link rel="stylesheet" href="webuploader.css">
然后,我们就可以初始化WebUploader对象了:
var uploader = WebUploader.create({
// 选完文件后,是否自动上传。
auto: true,
// swf文件路径
swf: 'Uploader.swf',
// 文件接收服务端。
server: 'http://example.com/upload',
// 选择文件的按钮。可选。
// 内部根据当前运行是创建,可能是input元素,也可能是flash.
pick: '#filePicker',
// 只允许选择视频文件。
accept: {
title: 'Videos',
extensions: 'mp4,mov,avi',
mimeTypes: 'video/*'
},
// 不压缩image, 默认如果是jpeg,文件上传前会压缩一把再上传!
resize: false
});
实现断点续传
为了实现断点续传,我们需要在服务端实现断点续传的功能。同时,还需要在WebUploader中设置如下配置:
uploader.on('uploadProgress', function(file, percentage) {
var $li = $('#' + file.id),
$percent = $li.find('.progress .percentage');
// 避免重复创建
if (!$percent.length) {
$percent = $('<p class="percentage"></p>').appendTo($li.find('.progress'))
.html(percentage * 100 + '%');
} else {
$percent.html(percentage * 100 + '%');
}
// 总体进度条
$('.progress .text').html(Math.round(uploader.uploadProgress() * 100) + '%');
});
uploader.on('uploadSuccess', function(file) {
$('#' + file.id).addClass('upload-state-done');
});
uploader.on('uploadError', function(file) {
$('#' + file.id).addClass('upload-state-error');
});
uploader.on('uploadComplete', function(file) {
$('#' + file.id).find('.progress').fadeOut();
});
兼容IE8+浏览器
为了兼容IE8+浏览器,我们需要在WebUploader中设置如下配置:
uploader.flashSwfUrl = 'path/to/Uploader.swf';
同时,还需要在HTML中添加如下代码:
<!--[if lt IE 9]>
<script src="excanvas.js"></script>
<![endif]-->
结语
以上就是我使用WebUploader进行视频上传时踩坑的经历以及解决方案。希望能对大家有所帮助。