Fetch API загружает поврежденные файлы Excel в Dropbox
Я использую Dropbox SDK JS (
"dropbox": "^10.10.0"
) для загрузки файлов через
filesGetTemporaryUploadLink
, этот метод возвращает временный URL-адрес для загрузки файла.
Как я загружаю файл:
const fileUploadResult = await fetch(uploadDestination.url, {
body: fileData,
cache: "no-cache",
credentials: "same-origin",
headers: {
"Content-Type": "application/octet-stream"
},
method: "POST",
mode: "cors"
});
Когда я загружаю PDF-файлы, все работает нормально, но когда я пытаюсь загрузить
.xlsx
файл, этот файл загружен поврежденным способом.
Я пытался играть с
Content-Type
, но когда я меняю
application/octet-stream
в MIME Excel (
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
) или
binar/octet-stream
, Я получаю сообщение об ошибке:
Не удалось загрузить ресурс: сервер ответил статусом 400 (неверный запрос)
Довольно странно, в чем разница между отправкой PDF-файлов и файлов Excel через
POST
с Fetch API?
1 ответ
Как упоминал @Greg , проблема заключалась в ненужной упаковке файла
FormData
, как только я удалил эту обертку, все работает правильно:
const fileData = domRef.files[0];
const fileUploadResult = await fetch(uploadDestination.url, {
body: fileData,
cache: "no-cache",
credentials: "same-origin",
headers: {
"Content-Type": "application/octet-stream"
},
method: "POST",
mode: "cors"
});