File upload in sharepoint list after the items created using jquery
Hi
I tried to add item in sharepoint list and then using the id tried to upload. The problem here is when i do debug the attachment is added to the item. If i run normally attachment has not added.
createTask = function () {
var x = $scope.task;
var call = addItemFields(x);
call.done(function (data, textStatus, jqXHR) {
var item = data.d;
function uploadDocument() {
var element = document.getElementById("inputFile");
var file = element.files[0];
var parts = element.value.split("\\");
var fileName = parts[parts.length - 1];
var reader = new FileReader();
reader.onload = function (e) {
addItem(e.target.result, fileName, item);
}
reader.onerror = function (e) {
alert(e.target.error);
}
reader.readAsArrayBuffer(file);
function addItem(buffer, fileName, item) {
var call2 = uploadDocument(buffer, fileName, item);
call2.done(function (data, textStatus, jqXHR) {
alert("successfully uploaded");
});
call2.fail(function (jqXHR, textStatus, errorThrown) {
failHandler(jqXHR, textStatus, errorThrown);
});
}
});
call.fail(function (jqXHR, textStatus, errorThrown) {
failHandler(jqXHR, textStatus, errorThrown);
});
}
function uploadDocument(buffer, fileName, item) {
var url = _spPageContextInfo.webAbsoluteUrl + "/_api/web/lists/GetByTitle('MeetingTasks')/items(" + item.Id + ")/AttachmentFiles/add(FileName='" + fileName + "')";
var call = jQuery.ajax({
url: url,
type: "POST",
data: buffer,
processData: false,
headers: {
Accept: "application/json;odata=verbose",
"X-RequestDigest": jQuery("#__REQUESTDIGEST").val(),
"Content-Length": buffer.byteLength,
"IF-MATCH": item.__metadata.etag,
"X-Http-Method": "MERGE"
}
});
return call;
}
function failHandler(jqXHR, textStatus, errorThrown) {
var response = JSON.parse(jqXHR.responseText);
var message = response ? response.error.message.value : textStatus;
alert("Call failed. Error: " + message);
}
function addItemFields(item) {
var now = new Date();
var call = jQuery.ajax({
url: _spPageContextInfo.webAbsoluteUrl +
"/_api/Web/Lists/getByTitle('MeetingTasks')/Items",
type: "POST",
data: JSON.stringify({
"__metadata": { type: "SP.Data.MeetingTasksListItem" },
Title: item.taskName,
Body: item.description, DueDate: item.dueDate
}),
headers: {
Accept: "application/json;odata=verbose",
"Content-Type": "application/json;odata=verbose",
"X-RequestDigest": jQuery("#__REQUESTDIGEST").val()
}
});
return call;
}
});
regards
jhanani