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"
});
Другие вопросы по тегам