Выгрузка zip-файла непосредственно в s3 из браузера после разархивирования в браузере - PullRequest
0 голосов
/ 12 ноября 2018

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

jsZip.loadAsync(zipFileAsBuffer).then(function (zip) {
            Object.keys(zip.files).forEach(function (filename) {
                console.log(filename)
                zip.files[filename].async('string').then(function (fileData) {

                })
            })
        })

Позже, когда я делаю fileData.byteLength для чанкинга, он выдает ошибку, в которой говорится, что byteLength не может найти значение undefined. Я предполагаю, что это потому, что процесс, который я использую, требует буфера, но вместо этого я получаю BLOB-объект из jsZip. Как я могу конвертировать BLOB-объекты в буфер или если требуется более эффективный подход, пожалуйста, скажите.

1 Ответ

0 голосов
/ 14 ноября 2018

Единственное изменение, которое мне нужно было сделать в существующем коде, - это использовать «ArrayBuffer» вместо «string». Так что модификация выглядит так:

jsZip.loadAsync(zipFileAsBuffer).then(function (zip) {
        Object.keys(zip.files).forEach(function (filename) {
            console.log(filename)
            zip.files[filename].async('ArrayBuffer').then(function (fileData) {

            })
        })
    })
...