我試圖使用原生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