我正在尝试使用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;
}
}即使我尝试将content-type和charset设置为ANSI,但文件仍然损坏。
res = await client.api('/me/drive/root:/Test/Test.xlsx:/content')
.headers("Content-Type", "text/plain; charset=windows-1252")
.put(data);知道为什么文件被破坏了吗?
我正在Windows 10中测试。
发布于 2019-08-02 00:01:56
我建议使用readAsArrayBuffer来确保你推高了服务期望的原始字节。
https://stackoverflow.com/questions/57302025
复制相似问题