Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <input name="getFile" id="getFile" type="file"/>
- <input id="addFileButton" onclick="uploadFile()" type="button" value="Upload"/> <script src="/js_css/jquery-1.10.2.js" type="text/javascript"></script>
- <script type="text/javascript">
- 'use strict';
- var fileName;
- jQuery(document).ready(function () {
- // Check for FileReader API (HTML5) support.
- if (!window.FileReader) {
- alert('This browser does not support the FileReader API.');
- }
- });
- // Upload the files
- function uploadFile() {
- // Get test values from the file input
- var fileInput = jQuery('#getFile');
- // Get the server URL.
- var serverUrl = _spPageContextInfo.webAbsoluteUrl;
- // Get the local file as an array
- var getFile = getFileBuffer();
- getFile.done(function (arrayBuffer) {
- // Add the file to the SharePoint Library.
- var addFile = addFileToFolder(arrayBuffer);
- addFile.done(function (file, status, xhr) {
- var getItem = getListItem(file.d.ListItemAllFields.__deferred.uri);
- getItem.done(function (listItem, status, xhr) {
- // Change the display name and title of the list item.
- var changeItem = updateListItem(listItem.d.__metadata);
- changeItem.done(function (data, status, xhr) {
- alert('file uploaded');
- $("#getFile").val("");
- });
- changeItem.fail(onError);
- });
- getItem.fail(onError);
- });
- addFile.fail(onError);
- });
- getFile.fail(onError);
- // Get the local file as an array buffer.
- function getFileBuffer() {
- var deferred = jQuery.Deferred();
- var reader = new FileReader();
- reader.onloadend = function (e) {
- deferred.resolve(e.target.result);
- }
- reader.onerror = function (e) {
- deferred.reject(e.target.error);
- }
- reader.readAsArrayBuffer(fileInput[0].files[0]);
- return deferred.promise();
- }
- // Add the file to the file collection in the Shared Documents folder.
- function addFileToFolder(arrayBuffer) {
- // Get the file name from the file input control on the page.
- var parts = fileInput[0].value.split('\');
- fileName = parts[parts.length - 1];
- // Construct the endpoint.
- var fileCollectionEndpoint = String.format(
- "{0}/_api/Web/Lists/getByTitle('TestDL')/RootFolder/Files/Add(url='{1}', overwrite=true)",
- serverUrl, fileName);
- // Send the request and return the response.
- // This call returns the SharePoint file.
- return jQuery.ajax({
- url: fileCollectionEndpoint,
- type: "POST",
- data: arrayBuffer,
- processData: false,
- headers: {
- "accept": "application/json;odata=verbose",
- "X-RequestDigest": jQuery("#__REQUESTDIGEST").val(),
- "content-length": arrayBuffer.byteLength
- }
- });
- }
- // Get the ListItemAllFields property.
- function getListItem(fileListItemUri) {
- // Send the request and return the response.
- return jQuery.ajax({
- url: fileListItemUri,
- type: "GET",
- headers: { "accept": "application/json;odata=verbose" }
- });
- }
- // Change the display name and title of the list item if you want.
- function updateListItem(itemMetadata) {
- var body = String.format("{{'__metadata':{{'type':'{0}'}},'FileLeafRef':'{1}','Title':'{2}'}}",
- itemMetadata.type, fileName, fileName);
- // Send the request and return the promise.
- // This call not return response content from the server.
- return jQuery.ajax({
- url: itemMetadata.uri,
- type: "POST",
- data: body,
- headers: {
- "X-RequestDigest": jQuery("#__REQUESTDIGEST").val(),
- "content-type": "application/json;odata=verbose",
- "content-length": body.length,
- "IF-MATCH": itemMetadata.etag,
- "X-HTTP-Method": "MERGE"
- }
- });
- }
- }
- // Display error messages.
- function onError(error) {
- alert(error.responseText);
- }
- </script>
Add Comment
Please, Sign In to add comment