Форма загрузки файла jQuery Дата не обновляются
Я уже читал, как отправить дополнительные данные формы, и это на самом деле работает. Но я пытаюсь обновить formData при каждой отправке фрагмента, чтобы новые данные отправлялись на сервер вместе с фрагментом.
Вот что я попробовал:
$('#upload').fileupload({
maxChunkSize: 100000, // 100KB
formData: {UploadID: 'just testing'},
}).bind('fileuploadchunkdone', function (e, data) {
UId = data.jqXHR.responseJSON.files[0].UploadId;
console.log(UId); // Confirmed, it does have the data sent back by the server
data.formData = {UploadID: UId}; // It updates, but doesn't send the new data
}).bind('fileuploadchunksend', function (e, data) {
// tried the same here, but no luck
});
С помощью Firebug я вижу данные, отправленные на сервер. Первый блок отправляет formData правильно, но второй блок снова отправляет те же данные.
Я также попробовал то, что описано здесь автором, но переопределяя send
Обработчик не работает, потому что это происходит только на первом фрагменте.
Есть идеи, как мне этого добиться?
2 ответа
Не проверял это, но вы можете определить UId
переменная в большем объеме и обновляйте ее при каждом вызове:
var UId = 'just testing';
$('#upload').fileupload({
maxChunkSize: 100000, // 100KB
formData: function(){
return [{UploadID: UId}];
}
}).bind('fileuploadchunkdone', function (e, data) {
UId = data.jqXHR.responseJSON.files[0].UploadId;
});
Не уверен, что это правильный путь для достижения этой цели. Но вот что я сделал:
var UId = 'just testing';
$('#upload').fileupload({
maxChunkSize: 100000, // 100KB
//formData: {UploadID: UId} REMOVED
}).bind('fileuploadchunkdone', function (e, data) {
// UId is set after the chunk is done
UId = data.jqXHR.responseJSON.files[0].UploadId;
}).bind('fileuploadchunksend', function (e, data) {
// and append UploadId
// Yes, append, not override
data.data.append('UploadId', UId);
// This will also be fired on the first chunk upload
// so it is better to set UId in a greater scope as koala_dev said
}
Как я уже сказал, я не знаю, правильно ли это. Но это сработало.
Обратите внимание, что я удалил formData: {UploadID: UId}
из начальной настройки. Хранение там сделало бы каждый кусок отправить UploadID
дважды, сначала в верхней части чанка (перед данными файла) с неизменным значением, а затем в нижней части чанка (после данных файла) с новым значением.