Я получаю сообщение об ошибке «save conflict» при попытке загрузить несколько вложений в свой список, и из того, что я понимаю, это потому, что sharepoint по-прежнему обрабатывает последнее вложение, когда приходит новый.sharepoint upload attachment, save conflict error
Возможно, мне кажется, что это может быть связано с задержкой перед отправкой в следующий файл, но это может также потерпеть неудачу, если указанный файл очень большой (слишком низкая задержка).
Это, как я отправляю вложения в данный момент:
Использование обещаний, $q
var elementPromises = [];
angular.forEach(element.files, function(item){
item = $scope.UploadAttachment(item).then(function(){});
elementPromises.push(item);
});
$q.all(elementPromises).then(function() {
// alert('all attachments saved');
}, function(reason) {
// alert('Failed: ' + reason);
}, function(update) {
//alert('Got notification: ' + update);
});
UploadAttachment функция:
$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
является функцией FileReader, от которым я буфер и имя файла, это то, что я загружаю в SharePoint
.
Entry
в New Entry (buffer)
является $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;
}
}
}
Как я уже сказал, это прекрасно работает для одного файла (или несколько маленьких), но при попытке загрузить несколько файлов с некоторым размером на них, я столкнулся с ошибкой сохранения.
Моя единственная идея до сих пор является некоторой задержкой, но я не знаю, где и как ее реализовать, также я боюсь, что этого будет недостаточно, никаких мыслей об этом?