Fetch API 将损坏的 Excel 文件上传到 Dropbox

Fetch API uploads corrupted Excel files to Dropbox

我正在使用 Dropbox SDK JS ("dropbox": "^10.10.0") 通过 filesGetTemporaryUploadLink 上传文件,此方法 returns 用于文件上传的临时 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 更改为 Excel 的 MIME (application/vnd.openxmlformats-officedocument.spreadsheetml.sheet) 或 binar/octet-stream ,我得到错误:

Failed to load resource: the server responded with a status of 400 (Bad Request)

这很奇怪,通过 POST 和 Fetch API 发送 PDF 和 Excel 文件有什么区别?

作为@Greg mentioned,问题是 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"
});