| <script type="text/javascript" src="/teams/MySCForApps/Style Library/JS/jquery-1.8.2.min.js"></script> |
| <script type="text/javascript" src="/teams/MySCForApps/Style Library/JS/jquery-ui.js"></script> |
| <script type="text/javascript" src="/_layouts/15/sp.runtime.js"></script> |
| <script type="text/javascript" src="/_layouts/15/sp.js"></script> |
| <script type="text/javascript" src="/teams/MySCForApps/Style Library/JS/jquery.MultiFile.js"></script> |
| <link rel="Stylesheet" type="text/css" href="../CSS/App.css" /> |
| <script language="javascript" type="text/jscript"> |
| $(function () { |
| var fileCountCheck = 0; |
| $("#btnSubmit").click(function () { |
| var data = []; |
| var fileArray = []; |
| $("#attachFilesContainer input:file").each(function () { |
| if ($(this)[0].files[0]) { |
| fileArray.push({ "Attachment": $(this)[0].files[0] }); |
| } |
| }); |
| data.push({"FirstName": $("#txtFirstName").val().trim(), "LastName": $("#txtLastName").val().trim(), "Files": fileArray}); |
| createItemWithAttachments("MyList", data).then( |
| function(){ |
| alert('Item created with Multiple attachments'); |
| }, |
| function(sender, args){ |
| console.log('Error occured' + args.get_message()); |
| } |
| ) |
| |
| }); |
| |
| var createItemWithAttachments = function(listName, listValues){ |
| var fileCountCheck = 0; |
| var fileNames; |
| var context = new SP.ClientContext.get_current(); |
| var dfd = $.Deferred(); |
| var targetList = context.get_web().get_lists().getByTitle(listName); |
| context.load(targetList); |
| var itemCreateInfo = new SP.ListItemCreationInformation(); |
| var listItem = targetList.addItem(itemCreateInfo); |
| listItem.set_item("FirstName", listValues[0].FirstName); |
| listItem.set_item("LastName", listValues[0].LastName); |
| listItem.update(); |
| context.executeQueryAsync( |
| function () { |
| var id = listItem.get_id(); |
| if (listValues[0].Files.length != 0) { |
| if (fileCountCheck <= listValues[0].Files.length - 1) { |
| loopFileUpload(listName, id, listValues, fileCountCheck).then( |
| function () { |
| }, |
| function (sender, args) { |
| console.log("Error uploading"); |
| dfd.reject(sender, args); |
| } |
| ); |
| } |
| } |
| else { |
| dfd.resolve(fileCountCheck); |
| } |
| }, |
| function(sender, args){ |
| console.log('Error occured' + args.get_message()); |
| } |
| ); |
| return dfd.promise(); |
| } |
| |
| function loopFileUpload(listName, id, listValues, fileCountCheck) { |
| var dfd = $.Deferred(); |
| uploadFile(listName, id, listValues[0].Files[fileCountCheck].Attachment).then( |
| function (data) { |
| var objcontext = new SP.ClientContext(); |
| var targetList = objcontext.get_web().get_lists().getByTitle(listName); |
| var listItem = targetList.getItemById(id); |
| objcontext.load(listItem); |
| objcontext.executeQueryAsync(function () { |
| console.log("Reload List Item- Success"); |
| fileCountCheck++; |
| if (fileCountCheck <= listValues[0].Files.length - 1) { |
| loopFileUpload(listName, id, listValues, fileCountCheck); |
| } else { |
| console.log(fileCountCheck + ": Files uploaded"); |
| alert('Item created with Multiple attachments'); |
| } |
| }, |
| function (sender, args) { |
| console.log("Reload List Item- Fail" + args.get_message()); |
| }); |
| |
| }, |
| function (sender, args) { |
| console.log("Not uploaded"); |
| dfd.reject(sender, args); |
| } |
| ); |
| return dfd.promise(); |
| } |
| |
| function uploadFile(listName, id, file) { |
| var deferred = $.Deferred(); |
| var fileName = file.name; |
| getFileBuffer(file).then( |
| function (buffer) { |
| var bytes = new Uint8Array(buffer); |
| var binary = ''; |
| for (var b = 0; b < bytes.length; b++) { |
| binary += String.fromCharCode(bytes[b]); |
| } |
| var scriptbase = _spPageContextInfo.webServerRelativeUrl + "/_layouts/15/"; |
| console.log(' File size:' + bytes.length); |
| $.getScript(scriptbase + "SP.RequestExecutor.js", function () { |
| var createitem = new SP.RequestExecutor(_spPageContextInfo.webServerRelativeUrl); |
| createitem.executeAsync({ |
| url: _spPageContextInfo.webServerRelativeUrl + "/_api/web/lists/GetByTitle('" + listName + "')/items(" + id + ")/AttachmentFiles/add(FileName='" + file.name + "')", |
| method: "POST", |
| binaryStringRequestBody: true, |
| body: binary, |
| success: fsucc, |
| error: ferr, |
| state: "Update" |
| }); |
| function fsucc(data) { |
| console.log(data + ' uploaded successfully'); |
| deferred.resolve(data); |
| } |
| function ferr(data) { |
| console.log(fileName + "not uploaded error"); |
| deferred.reject(data); |
| } |
| }); |
| |
| }, |
| function (err) { |
| deferred.reject(err); |
| } |
| ); |
| return deferred.promise(); |
| } |
| function getFileBuffer(file) { |
| var deferred = $.Deferred(); |
| var reader = new FileReader(); |
| reader.onload = function (e) { |
| deferred.resolve(e.target.result); |
| } |
| reader.onerror = function (e) { |
| deferred.reject(e.target.error); |
| } |
| reader.readAsArrayBuffer(file); |
| return deferred.promise(); |
| } |
| }); |
| </script> |
| <div class="fld"> |
| <div> |
| <span>First Name</span> |
| <span><input type="text" id="txtFirstName"></span> |
| </div> |
| <div> |
| <span>Last Name</span> |
| <span><input type="text" id="txtLastName"></span> |
| </div> |
|
|
| Attach any relevant files |
| <div class="files" id="attachFilesContainer"> |
| <input id="infringementFiles" type="file" class="multi browsebtn" /> |
| </div> |
| </div> |
| <div class="fld"> |
| <input class="btn" id="btnSubmit" value="Submit" type="button" /> |
| </div> |