RTF*_*RTF 3 javascript jquery blueimp jquery-file-upload
这个插件有很多选项(jquery-file-upload),文档看起来不错,但我还是有点困惑.我的表格看起来像:
<form id="fileupload" action="/file-upload" method="POST" enctype="multipart/form-data">
<div class="form-buttons">
<span id="add-files-wrap">
<span>Add Files</span>
<input id="add-files-btn" type="file" name="files[]" multiple>
</span>
<button id="upload-btn" type="button" onclick="uploadFiles()" class="btn-disabled">
<span>Start Upload</span>
</button>
</div>
</form>
Run Code Online (Sandbox Code Playgroud)
添加一个或多个文件时,add会触发fileupload intialiser中的回调:
$('#fileupload').fileupload({
url: '/file-upload',
sequentialUploads: true,
add: function(e, data) {
$.each(data.files, function(idx, file) {
MY_FILES.push(file);
}
}
});
Run Code Online (Sandbox Code Playgroud)
然后单击表单中的上传按钮:
function uploadFiles() {
for (var i=0; i<MY_FILES.length; i++) {
// Submit the file - how ???
}
}
Run Code Online (Sandbox Code Playgroud)
我想一次一个地提交/发送每个文件,每个文件使用单独的请求.我知道我可以这么做,fileupload('send', {files: MY_FILES})但是我希望有一个回调,这个回调是从请求的每个成功响应中触发的.我对文档中的所有回调选项感到困惑.
编辑:
回答了我自己的问题.
在仔细阅读了文档之后,我最终做了类似这样的事情:
function uploadFiles() {
uploadFile( FILES.pop() );
}
function uploadFile(file) {
if (file == null) {
console.log("Finished processing files.");
return;
}
$('#fileupload').fileupload('send', {files: [file]})
.success(function (result, textStatus, jqXHR) {
console.log("Success...");
uploadFile( FILES.pop() );
})
.error(function (jqXHR, textStatus, errorThrown) {
console.log("Error...");
})
.complete(function (result, textStatus, jqXHR) {
console.log("Complete...");
});
}
Run Code Online (Sandbox Code Playgroud)
这很好用.