Jquery 如何确定哪些文件进度适用于?
关于,有一个Jquery 如何确定哪些文件进度适用于?,jquery,blueimp,Jquery,Blueimp,关于,有一个progress事件,它传回一个data对象,据我所知,该对象报告每个文件的进度 我正在通过add()事件将文件和进度条添加到我的UI中,我想稍后在progress()事件中更新它们各自的进度条。我遇到的问题是如何匹配它们 我需要给每个文件一个唯一的ID,这样我就可以对它们进行配对,但据我所知,没有提供一个。我们该怎么做 每个文件对象是否都有一些JavaScript哈希代码 一些代码: $('#fileupload').fileupload({ url: 'api/combo
progress
事件,它传回一个data
对象,据我所知,该对象报告每个文件的进度
我正在通过add()
事件将文件和进度条添加到我的UI中,我想稍后在progress()
事件中更新它们各自的进度条。我遇到的问题是如何匹配它们
我需要给每个文件一个唯一的ID,这样我就可以对它们进行配对,但据我所知,没有提供一个。我们该怎么做
每个文件对象是否都有一些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);
}
});
我现在感到困惑的是,在progress事件中,它不仅给你一个文件,它还给你一个包含1个文件的数组。。。我不确定是否保证其中始终有一个文件(
data.files
)或没有。您没有发布实际调用文件上载或绑定到进度事件的代码,但我猜您只需要在fileuploadprogress
函数周围放置一个包装器
$.proxy
函数允许您指定此将在函数中引用的内容。然后在您的函数中,您将可以访问数据,并且此将能够提供上下文。我应该阅读名为:
$(函数(){
$('#fileupload')。fileupload({
数据类型:“json”,
添加:功能(e、数据){
data.context=$(“”).text('Uploading…).appendTo(document.body);
data.submit();
},
完成:功能(e,数据){
data.context.text('Upload finished');
}
});
});
但我不会为每个文件手动绑定进度
事件…这都是自动完成的。如何为每个文件设置不同的上下文?顺便说一句,发布了一些代码。查看fileupload
小部件的文档/源代码,它有一个名为singleFileUploads
的选项,默认设置为true
。它可以处理多个文件,但只要您不将该值更改为false
,就应该保证文件中只有一个项。。我没有注意到默认情况下这是true
。。。但我不确定这是如何解决这个问题的?您只需实例化一次$.fileupload()
,并为其提供一个进度事件。使用$.proxy
您必须将每个文件绑定到不同的回调。似乎数据
对象在添加
、进度
和完成
之间共享。我假设data.files[I].name
是一个合理的标识符。如果数组中已有同名文件,则可以阻止add
调用data.submit()
。我曾考虑使用文件名作为标识符,但用户可以很容易地在不同文件夹中选择同名文件。
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);
}
});
$(function () {
$('#fileupload').fileupload({
dataType: 'json',
add: function (e, data) {
data.context = $('<p/>').text('Uploading...').appendTo(document.body);
data.submit();
},
done: function (e, data) {
data.context.text('Upload finished.');
}
});
});