Web Uploader上傳文件
Web Uploader是百度提供的。
1:下載:http://fex.baidu.com/webuploader/(官方下載/示例)
2:使用Web Uploader文件上傳需要引入三種資源:JS, CSS, SWF。
///src值根據(jù)文件在項目中的位置而定 <link href="~/Content/webuploader/webuploader.css" rel="stylesheet" /> <script src="~/Content/webuploader/webuploader.js"></script>
<!--SWF在初始化的時候指定,在后面將展示-->
3、html部分:
<div id="uploadWindow" class="container-fluid">
<div class="windowTop" style="border-bottom:1px solid #808080;">
<div id="filePicker" style="width:50%;float:left;padding:5px 3px;">
選擇文件
</div>
<button id="ctlBtn" class="button-upload">開始上傳</button>
<button id="closeUploadWindow" class="button-upload cl">關(guān)閉</button>
</div>
<div class="windowCenter">文件上傳示例:</div>
<div class="windowBottom">
<div id="selectedFiles" class="wu-example">
<!--用來存放文件信息-->
<div id="fileList" class="uploader-list"></div>
</div>
</div>
</div>
4、js部分
var applicationPath = window.applicationPath === "" ? "" : window.applicationPath || "../../";
// 上傳初始化
function initUpload() {
//文件上傳
var $ = jQuery,
$list = $('#fileList'),
$btn = $('#ctlBtn'),
state = 'pending',
uploader;
uploader = WebUploader.create({
auto: false,// 選完文件后,是否自動上傳。
// 不壓縮image
resize: false,
// swf文件路徑
swf: applicationPath + '~/Content/webuploader/Uploader.swf',
// 文件接收服務(wù)端。
server: '/Home/UploadFiles',
// 選擇文件的按鈕??蛇x。
// 內(nèi)部根據(jù)當前運行是創(chuàng)建,可能是input元素,也可能是flash.
pick: '#filePicker',
//accept: {
// title: "RFA",
// extensions: "rfa",
// mimeTypes: ".rfa,application/octet-stream",
//},
chunked: true,// 開起分片上傳。
threads: 1, // 上傳并發(fā)數(shù)。允許同時最大上傳進程數(shù)。
method: 'POST', // 文件上傳方式,POST或者GET。
//fileSizeLimit: 1024 * 1024 * 100 * 100, //驗證文件總大小是否超出限制, 超出則不允許加入隊列。
//fileSingleSizeLimit: 1024 * 1024 * 100, //驗證單個文件大小是否超出限制, 超出則不允許加入隊列。
//fileVal: 'upload', // [默認值:'file'] 設(shè)置文件上傳域的name。
});
// 當有文件添加進來的時候
uploader.on('fileQueued', function (file) {
$list.append('<div id="' + file.id + '" class="item">' +
'<h4 class="info">' + file.name + '</h4>' +
'<p class="state">等待上傳...</p>' +
'</div>');
});
// 文件上傳過程中創(chuàng)建進度條實時顯示。
uploader.on('uploadProgress', function (file, percentage) {
var $li = $('#' + file.id),
$percent = $li.find('.progress .progress-bar');
// 避免重復(fù)創(chuàng)建
if (!$percent.length) {
$percent = $('<div class="progress progress-striped active">' +
'<div class="progress-bar" role="progressbar" style="width: 0%">' +
'</div>' +
'</div>').appendTo($li).find('.progress-bar');
}
$li.find('p.state').text('上傳中');
$percent.css('width', percentage * 100 + '%');
});
uploader.on('uploadSuccess', function (file, response) {
$('#' + file.id).find('p.state').text(response.info);
// fileurl = response.data; //上傳文件的路徑
//
});
uploader.on('uploadError', function (file, response) {
debugger
$('#' + file.id).find('p.state').text('上傳出錯 ' + response);
});
uploader.on('uploadComplete', function (file, response) {
$('#' + file.id).find('.progress').fadeOut();
});
//當所有文件上傳完成時觸發(fā)
uploader.on('uploadFinished', function () {
這里是一個異步回調(diào)函數(shù),對文件的一個處理。后臺通過單獨開一個線程進行處理。詳情看多線程分類里相關(guān)文檔里
// webuploaderCallBack();
});
uploader.on('all', function (type) {
if (type === 'startUpload') {
state = 'uploading';
} else if (type === 'stopUpload') {
state = 'paused';
} else if (type === 'uploadFinished') {
state = 'done';
}
if (state === 'uploading') {
$btn.text('上傳中...');
} else {
$btn.text('開始上傳');
}
});
$btn.on('click', function () {
var type="010";
var onelevel = $("#onelevel option:selected").attr("id");
var twolevel = $("#twolevel option:selected").attr("id");
var threelevel = $("#threelevel option:selected").attr("id");
if (threelevel != undefined) {
type = threelevel;
}
else {
if (twolevel != undefined) {
type = twolevel;
} else {
if (onelevel != undefined) {
type = onelevel;
}
}
}
// 初始化以后添加
uploader.options.formData.filetype = type;
if (state === 'uploading') {
uploader.stop();
} else {
uploader.upload();
}
});
///取消上傳
$('.uploader-list').on('click', '.btn-remove', function () {
debugger
// 從文件隊列中刪除某個文件id
file_id = $(this).data('id');
uploader.removeFile(file_id, true); // 從隊列中刪除
//console.log(uploader.getFiles()) // 隊列顯示還在 其實已經(jīng)刪除
});
//重試上傳,重試指定文件,或者從出錯的文件開始重新上傳。
$('.uploader-list').on('click', '.upload-item__progress span', function () {
debugger
uploader.retry($(this).data('file'));
});
};
5、常見問題及解決方案:
待寫

浙公網(wǎng)安備 33010602011771號