【发布时间】:2016-06-27 21:39:04
【问题描述】:
我在将文件上传到“OneDrive Api”时遇到了一些问题。
我得到了上传de文件的URL:
$.ajax({
type: "POST",
url: folderUrl,
headers: {
'Authorization': 'Bearer ' + access_token,
'Content-Type': 'application/json',
},
success: {.....}
});
有了它,我得到了“上传网址”。然后我读取并上传用户选择的文件(我需要对文件进行分段):
var fileInput = $("#file");
var fileList = fileInput[0].files;
var file = fileList[0];
content_length = file.size;
inicio = 0;
var blob = file.slice(inicio, content_length);
fileReader.onloadend = function (evt) {
if (evt.target.readyState == FileReader.DONE) { // DONE == 2
var result = evt.target.result;
$.ajax({
method: "PUT",
url: uploadUrl,
headers: {
'Authorization': 'Bearer ' + access_token,
'Content-Range': "bytes " + inicio + "-" + ((inicio + evt.target.result.length)-1) + "/" + content_length,
},
data: result,
success: function (result) {
console.log("subió");
},
error: function (error) {
console.log("falló");
console.log(JSON.stringify(error, null));
}
})
.done(function (msg) {
alert("Data Saved: " + msg);
});
}
};
fileReader.readAsBinaryString(blob);
当我上传包含类似内容的文本文件时
“Lorem ipsum dolor sit amet”(不含特殊字符 'ñ'、'á'、 等等……)
它工作。
但是,当上传带有特殊字符(“ñ”、“á”、“¿”....)的文件时会显示错误:
"code":"invalidRequest","message":"**Declared fragment length does not match the provided number of bytes**"
还有“.doc”、“.zip”等文件。
[编辑]:我注意到“á”的“á”变化(例如)。
我需要帮助:/
谢谢
【问题讨论】:
标签: javascript file-upload onedrive