После того, как пользователь загрузит заархивированный файл, я хочу удалить из него папку с изображениями перед отправкой по сети. Я использую кендо для загрузки, и существующая функциональность работает нормально. Я просто хочу добавить часть удаления изображений. Это то, что у меня есть до сих пор:
function onSelect(e) {
var file = e.files[0];
if (endsWith(file.name, '.eds')) {
var contents = e.target.result;
var jszip = new JSZip(contents);
jszip.remove("apldbio/sds/images_barcode");
fileToSend = jszip.generate({type: "base64", compression: "DEFLATE"});
}
e.files[0] = fileToSend;
openProgressDialog(e.files.length); //this is existing code, works fine
}
target.result
не существует в событии e
. И с этого момента ничего не работает должным образом. e
, вероятно, следует использовать внутри объекта FileReader onload() (как показано здесь и здесь), но я понятия не имею, как использовать FileReader для моей цели с загрузкой кендо.
РЕДАКТИРОВАТЬ:
Я еще немного прочитал, и теперь я использую FileReader следующим образом:
var reader = new FileReader();
reader.onload = function (e) {
// do the jszip stuff here with e.target.result
};
reader.onerror = function (e) {
console.error(e);
};
reader.readAsArrayBuffer(file);
Примечание: file = e.files[0]
как в 1-м кодовом блоке. Однако при этом я получаю сообщение об ошибке:
Failed to execute 'readAsArrayBuffer' on 'FileReader': parameter 1 is not of type 'Blob'.
evt.target.files[0]
— это файл, который является большим двоичным объектом. Какой браузер вы используете? - person David Duponchel   schedule 25.03.2015change
(имя функции предполагает иное) и использованиеe.target.files[0]
вместоe.files[0]
. Если у вас все еще есть проблема, не могли бы вы создать образец с помощью jsfiddle? - person David Duponchel   schedule 27.03.2015