0

我正在尝试使用 Microsoft Graph API 将 excel 文件上传到 OneDrive。excel 文件已上传,但问题是文件在 OneDrive 中已损坏。当我下载excel文件并与原始excel文件比较文件大小时,从OneDrive下载的excel文件大小很高。所以我认为问题是在上传文件时,它的字符集被转换为 UTF-8。

export async function uploadFile(accessToken) {
  try {
    const client = getAuthenticatedClient(accessToken);
    var res;

    var file = document.getElementById("inputFile").files[0];
    var r = new FileReader();

    r.onloadend = async function (e) {
      let promise = new Promise((res, rej) => {
        setTimeout(() => res("upload success"), 3000)
      });

      var data = e.target.result;
      res = await client.api('/me/drive/root:/Test/Test.xlsx:/content')
        .put(data);

      let result = await promise;
    }

    r.readAsBinaryString(file);

    return res;
  }
  catch (err) {    
    return err;
  }
}

即使我尝试将内容类型和字符集设置为 ANSI,但文件仍然损坏。

res = await client.api('/me/drive/root:/Test/Test.xlsx:/content')
        .headers("Content-Type", "text/plain; charset=windows-1252")
        .put(data);

知道为什么文件损坏了吗?

我正在 Windows 10 中进行测试。

4

1 回答 1

1

我建议使用readAsArrayBuffer它来确保你推高了服务所期望的原始字节。

于 2019-08-01T16:01:55.680 回答