我试图使用原生JavaScript/jQuery将图片上传到SharePoint - 不是SP.RequestExecutor。SharePoint Online REST - 通过JavaScript/AJAX上传图片
我已经破解了认证问题,很好很容易,所以现在只是一个解决如何上传二进制文件的例子。如果我在文件中添加纯文本,它会很好地上传,它只是我遇到的二进制数据。
我的代码到目前为止包括在下面。 getToken()
做它的事情,并留下一个有效的摘要对象使用。另外请注意,我已用*
的空白表示文档库名称。
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的任何指导?我应该提到,如果我替换(在ajax调用)data: fileData,
与data: "A simple string",
文件上传,当我下载它时,文件的内容是A simple string
。
对于未来:这个问题可能会发现更多的专业观众,如果你把它发布到[ SharePoint StackExchange](http://sharepoint.stackexchange.com/)。 – Markus