Как удалить файлы из zip-файла, загруженного через kendoUpload? Использование jszip

После того, как пользователь загрузит заархивированный файл, я хочу удалить из него папку с изображениями перед отправкой по сети. Я использую кендо для загрузки, и существующая функциональность работает нормально. Я просто хочу добавить часть удаления изображений. Это то, что у меня есть до сих пор:

   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'.


person insanity    schedule 25.03.2015    source источник
comment
Когда я использую отладчик на stuk.github.io/ jszip/documentation/examples/ тип evt.target.files[0] — это файл, который является большим двоичным объектом. Какой браузер вы используете?   -  person David Duponchel    schedule 25.03.2015
comment
Я протестировал jsfiddle.net/5xmbnn6g в хроме без проблем. Две вещи, которые я изменил в коде, который вы разместили: привязка к change (имя функции предполагает иное) и использование e.target.files[0] вместо e.files[0]. Если у вас все еще есть проблема, не могли бы вы создать образец с помощью jsfiddle?   -  person David Duponchel    schedule 27.03.2015