【问题标题】:Excel file Corrupted while uploading to OneDrive #MicrosoftGraphExcel 文件在上传到 OneDrive #MicrosoftGraph 时损坏
【发布时间】:2019-08-01 04:55:51
【问题描述】:

我正在尝试使用 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 中进行测试。

【问题讨论】:

  • 你好,我也有同样的问题。你找到解决方案了吗?当我在 OneDrive 中上传 10Ko 的文件时,它到达 15ko。我认为这是来自编码的问题...

标签: excel microsoft-graph-api onedrive microsoft-graph-mail


【解决方案1】:

我建议使用readAsArrayBuffer 来确保您推送服务所期望的原始字节。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-31
    • 2017-12-03
    • 2020-09-27
    • 2017-08-18
    • 2016-08-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多