【发布时间】:2015-09-21 20:16:23
【问题描述】:
我正在尝试使用本机 JavaScript/jQuery 将图像上传到 SharePoint - 而不是 SP.RequestExecutor。
我已经破解了身份验证问题,很简单,所以现在只是研究如何上传二进制文件的一个案例。如果我在文件中放入纯文本,它可以很好地上传,这只是我遇到问题的二进制数据。
到目前为止,我的代码包含在下面。 getToken() 做到了,让我有一个有效的摘要对象可供使用。另请注意,我已使用 *'s 删除了文档库名称。
function PerformUpload(fileName, fileData) {
getToken();
$.ajax({
url: siteFullUrl +
"/_api/web/GetFolderByServerRelativeUrl('/*****/')/Files" +
"/Add(url='" + fileName + "', overwrite=true)",
type: "POST",
async: false,
data: fileData,
processData: false,
contentType: "application/json;odata=verbose",
headers: {
"Accept": "application/json;odata=verbose",
"X-RequestDigest": digest
},
success: function (data) {
alert("Success");
},
error: function (err) {
alert("Error: \r\n" + JSON.stringify(err));
}
});
}
我为contentType 尝试了许多不同值的组合,设置binaryStringRequestBody: true,但图像在进入SharePoint 时仍然损坏。
我目前将文件解析为二进制的代码是
var reader = new FileReader();
reader.onload = function (result) {
var fileName = '',
libraryName = '',
fileData = '';
var byteArray = new Uint8Array(result.target.result)
for (var i = 0; i < byteArray.byteLength; i++) {
fileData += String.fromCharCode(byteArray[i])
}
PerformUpload("image.jpg", fileData);
};
reader.readAsArrayBuffer(fileInput);
一个文件正在上传到 SharePoint,但如果我尝试查看或下载它,它已损坏。
任何人都可以就将二进制文件上传到 SharePoint 的正确方法提供任何指导吗?我应该提一下,如果我用data: "A simple string", 替换(在ajax 调用上)data: fileData,,文件就会上传,当我下载它时,文件的内容是A simple string。
【问题讨论】:
-
未来:如果您将这个问题发布到SharePoint StackExchange,可能会找到更专业的受众。
标签: javascript rest sharepoint sharepoint-online