Javascript sharepoint上载附件,保存冲突错误
我在尝试将多个附件上载到我的列表时遇到“保存冲突”错误,据我所知,这是因为sharepoint在收到新附件时仍在处理最后一个附件 我认为,在发送下一个文件之前,可能会有某种延迟,但如果所述文件非常大,延迟太短,也可能会失败 这就是我目前上传附件的方式: 使用承诺,$q 上传附件功能:Javascript sharepoint上载附件,保存冲突错误,javascript,angularjs,sharepoint,Javascript,Angularjs,Sharepoint,我在尝试将多个附件上载到我的列表时遇到“保存冲突”错误,据我所知,这是因为sharepoint在收到新附件时仍在处理最后一个附件 我认为,在发送下一个文件之前,可能会有某种延迟,但如果所述文件非常大,延迟太短,也可能会失败 这就是我目前上传附件的方式: 使用承诺,$q 上传附件功能: $scope.UploadAttachment = function(file){ var deferred = $q.defer(); setTimeout(function() {
$scope.UploadAttachment = function(file){
var deferred = $q.defer();
setTimeout(function() {
// deferred.notify('Saving attachments..');
readFile(file).done(function (buffer, fileName) {
var saveFile = new Entry(buffer);
saveFile.$upload({ID: ID, filename: fileName}, function(u){
console.log(u);
deferred.resolve('Success');
}, function(error){
console.log(error);
deferred.reject('Error');
});
});
}, 1000);
return deferred.promise;
};
ReadFile是一个文件阅读器函数,从中我可以得到一个缓冲区和文件名,这就是我上传到SharePoint的内容
新条目缓冲区中的条目是$resource工厂,具有此$upload功能:
upload: {
url: "serverURL/_api/lists/getByTitle('listName')/items(:ID)/AttachmentFiles/add(FileName=':filename')",
method: "POST",
transformRequest: [],
processData: true,
headers: {
"accept": "application/json;odata=verbose",
"X-RequestDigest": function() {return $("#__REQUESTDIGEST").val()},
"content-length": function () {
return arguments[0].data.byteLength;
}
}
}
正如我所说的,这对一个文件或几个小文件非常有效,但是当尝试上载多个大小不同的文件时,我遇到了保存冲突错误
到目前为止,我唯一的想法是某种延迟,但我不知道在哪里或如何实现它,而且我担心这还不够,对此有什么想法吗?您需要序列化项目更新和项目文件附件REST调用。在前一个呼叫完成之前,不得触发下一个呼叫。与您的实现并行进行调用,导致保存冲突
upload: {
url: "serverURL/_api/lists/getByTitle('listName')/items(:ID)/AttachmentFiles/add(FileName=':filename')",
method: "POST",
transformRequest: [],
processData: true,
headers: {
"accept": "application/json;odata=verbose",
"X-RequestDigest": function() {return $("#__REQUESTDIGEST").val()},
"content-length": function () {
return arguments[0].data.byteLength;
}
}
}