Zip-файл, загруженный с ReactJs / Axios, поврежден - PullRequest
0 голосов
/ 29 января 2019

Я пытаюсь загрузить zip-файл из API-интерфейса Django и попросить пользователя загрузить его.В zip-файле есть два CSV-файла.

Я могу загрузить отдельные CSV-файлы по отдельности, но когда я пытаюсь загрузить zip-архив и распаковать его, я получаю сообщения о том, что zip-файл поврежден.Для проверки работоспособности я могу отправить запрос через почтальона.Я могу успешно загрузить и распаковать файл, используя это.

Вот мой фрагмент кода:

        axios
        .post('http://0.0.0.0:8000/sheets/', data,
            {
                headers: {
                    'Content-Type': 'multipart/form-data',
                    'responseType': 'arraybuffer'
                }
            })
        .then(res => {
            console.log(res.data)
            const disposition = res.request.getResponseHeader('Content-Disposition')
            var fileName = "";
            var filenameRegex = /filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/;
            var matches = filenameRegex.exec(disposition);
            if (matches != null && matches[1]) {
                fileName = matches[1].replace(/['"]/g, '');
            }
            let blob = new Blob([res.data], { type: 'application/zip' })

            const downloadUrl = URL.createObjectURL(blob)
            let a = document.createElement("a"); 
            a.href = downloadUrl;
            a.download = fileName;
            document.body.appendChild(a);
            a.click();

1 Ответ

0 голосов
/ 24 марта 2019

Проблема заключалась в том, что responseType: arraybuffer не должен находиться в заголовках. 1001 *

...