关于jQuery File Upload,有一个progress
事件会传回一个data
对象,据我所知,它会报告每个文件的进度。
我正在通过add()
事件将文件和进度条添加到我的 UI 中,并且我想稍后在progress()
事件中更新它们各自的进度条。我遇到的问题是如何匹配它们?
我需要给每个文件一个唯一的 ID,以便我可以将它们配对,但据我所知,没有提供一个。我们应该怎么做?
每个 File 对象可能有一些 JavaScript 哈希码吗?
一些代码:
$('#fileupload').fileupload({
url: 'api/combox_upload.php',
dataType: 'json',
dropZone: $dropZone,
done: function (e, data) {
$.each(data.result, function(index, file) {
// indicate completeness
});
},
add: function(e, data) {
$.each(data.files, function(index, file) {
console.log(file);
$file_uploads.append($('<li>').text(file.name));
});
data.submit(); // start upload immediately
},
progress: function(e, data) {
console.log(data);
}
});
我想我可以通过$.data
如下方式为每个文件附加一个唯一的 ID:
var fileId = 0;
$('#fileupload').fileupload({
url: 'api/combox_upload.php',
dataType: 'json',
dropZone: $dropZone,
done: function (e, data) {
$.each(data.result, function(index, file) {
// indicate completeness
});
},
add: function(e, data) {
$.each(data.files, function(index, file) {
//console.log(file);
console.log(filename, fileId);
$.data(file, 'id', fileId++);
$file_uploads.append($('<li>').text(file.name));
});
data.submit(); // start upload immediately
},
progress: function(e, data) {
var progress = parseInt(data.loaded / data.total * 100, 10);
$.each(data.files, function(index, file) {
console.log($.data(file,'id'), file.name, progress);
});
//console.log(data);
}
});
我现在感到困惑的部分是,在进度事件中,它不仅给你一个文件,它给你一个包含 1 个文件的数组......我不确定是否保证它总是有是否有 1 个文件 ( data.files
)。