Jeśli chodzi o jQuery File Upload, istnieje zdarzenie progress
, które przekazuje obiekt data
, który jak rozumiem, raportuje postęp każdego pliku.Jak zidentyfikować postęp pliku?
Dodaję paski pliku i postępu do mojego interfejsu użytkownika poprzez zdarzenie add()
i chcę później zaktualizować odpowiednie paski postępu w wydarzeniu progress()
. Problemem, który mam, jest to, jak je dopasować?
Muszę nadać każdemu plikowi unikalny identyfikator, aby można go było sparować, ale jedno nie zostało dostarczone, o ile widzę. Jak mamy to zrobić?
Czy jest jakiś kod skrótu JavaScript dla każdego obiektu pliku?
Niektóre kodu:
$('#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);
}
});
myślę mogę dołączyć unikatowy identyfikator dla każdego pliku wykorzystując $.data
tak:
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);
}
});
część, że jestem zdezorientowany o to, że w trakcie postępu nie daje tylko jednego pliku, daje tablicę zawierającą 1 plik ... Nie jestem pewien, czy to jest gwarantowane aby zawsze mieć dokładnie 1 plik (data.files
) lub nie.
Ale nie wiążą 'progress' zdarzenie ręcznie dla każdego pliku ... to wszystko odbywa się automatycznie. Jak ustawić inny kontekst dla każdego pliku? Wysłano trochę kodu BTW. – mpen
Przeglądając dokumentację/kod źródłowy widżetu 'fileupload' ma on opcję o nazwie' singleFileUploads', która jest domyślnie ustawiona na 'true'. Jest w stanie wykonać więcej niż jeden plik, ale dopóki nie zmienisz tej wartości na "false", powinieneś mieć gwarancję, że w twojej macierzy 'files' będzie tylko 1 element. –
Och ... Nie zauważyłem, że to było "prawda" domyślnie ... ale nie jestem pewien, jak to w ogóle rozwiązuje problem? Inicjujesz '$ .fileupload()' tylko raz i nadajesz mu * jedno * zdarzenie postępu niezależnie. Z '$ .proxy' musisz powiązać każdy plik do innego wywołania zwrotnego. – mpen