I had an opportunity to work on an assignment related to upload of documents from Asp.Net MVC application into a SharePoint site with Angular Js. Follow the the simple steps provided below to upload documents into SharePoint 2013 document library with Angular Js
Create a ASP.NET MVC Application and install jquery and Angular JS from Nuget.
Modify the Index.Cshtml(under View->Home) with the following code
<table style="width:100%;">
<tr>
<td>
<label for="lblinput">Input the search string</label>
</td>
<td>
<input id="Text1″ type="text" ng-model="Search" value="Category" />
</td>
</tr>
<tr>
<td>
<input id="Submit1″ type="submit" value="submit" ng-click="GetDetails()" />
</td>
</tr>
</table>
<table style="width:100%;">
<tr>
<td>
<label for="lblinput">Add value to Sharepoint</label>
</td>
<td>
<input id="Text1″ type="text" ng-model="NewItem" value="Category" />
</td>
</tr>
<tr>
<td>
<input id="Submit1″ type="submit" value="submit" ng-click="Add()" />
</td>
</tr>
</table>
<table>
<tr>
Select File to Upload :
<input id="inputFile" type="file" />
<input type="button" ng-click="Upload();" value="Upload" />
</tr>
</table>
<h1>{{title}}</h1>
{{station_list}}
Create a Script.js File and copy and paste the below code:
var app = angular.module("myApp", []);
//This is to get the data from sharepoint
app.controller("myController", function($scope, $http, $q) {
$scope.GetDetails = function() {
$http({
withCredentials: true,
method: 'GET',
headers: {"Accept": "application/json;odata = verbose"
},
url: "http://[SharePoint Site]/_api/lists/getbytitle('" + $scope.Search + "')/items"
})
.then(function(response) {
var station_list = [];
$.each(response.data.d.results, function(key, value) {
station_list.push(value.Title);
});
$scope.station_list = station_list;
$scope.title = "Data From Sharepoint";
});
};
//To get the formdigestvalue, which is required to insert data to sharepoint
//Define the service call
function getFormDigest() {
//Fetch the Url
// JSRequest.EnsureSetup();
// var appweburl = decodeURIComponent(JSRequest.QueryString['SPAppWebUrl']);
var dfd = $q.defer();
//Http post to the context info rest service
$http.post("http://[SharePoint Site]/_api/contextinfo”, {
data: ",
headers: {"Accept": "application/json;odata = verbose",
"Content-Type": "text/xml"
},
}).success(function(data) {
//Resolve the FormDigestValue from the success callback.
dfd.resolve(data.d.GetContextWebInformation.FormDigestValue);
// alert(data.d.GetContextWebInformation.FormDigestValue);
}).error(function() {
dfd.reject("error finding form digest");
});
return dfd.promise;
}
//Inserting data to sharepointt
$scope.Add = function() {
alert($scope.NewItem);
$http.defaults.headers.common.Accept = "application/json;odata = verbose";
$http.defaults.headers.post['Content-Type'] = 'application/json;odata = verbose';
$http.defaults.headers.post['X-Requested-With'] = 'XMLHttpRequest';
$http.defaults.headers.post['If-Match'] = "*";
$http.defaults.headers.post['X-HTTP-Method'] = "";
getFormDigest().then(function(digest) {
$http.defaults.headers.post['X-RequestDigest'] = digest;
var dfd = $q.defer();
$http.defaults.headers.post['X-HTTP-Method'] = "";
// To create a item in list, use the below URL
var restUrl = "https: //[SharePoint Site]/_api/lists/getbytitle('Testing’)/items";
// To attach a file to lib use the below REST URL
//url: "http://[SharePoint Site]/_api/web/lists/GetByTitle('Testing’)/RootFolder/Files/Add(url='" + file.name + "', overwrite=true)",
// file attached for list item — item id is required for attachment.
//url: "http://[SharePoint Site]/_api/web/lists/GetByTitle('” + listName + "')/items(" + id + ")/AttachmentFiles/add(FileName='" + file.name + "')",
// if (document.getElementById("inputFile").files.length === 0) {
// alert("Select a file!");
//return;
//}
//var restUrl = "http://[SharePoint Site]/_api/web/lists/GetByTitle('Testing’)/items(4)/AttachmentFiles/add(FileName='" + file.name + "')";
$http.post(restUrl, {
__metadata: {type: 'SP.Data.TestingListItem'},
Title: $scope.NewItem
// binaryStringRequestBody: true,
// body: binary
}).success(function(data) {
//resolve the new data
//console.log("success");
// if (document.getElementById("inputFile").files.length === 0) {
// alert("Select a file!");
//return;
//}
//Upload file to list/documentlibrary provided the file is been selected
if (document.getElementById("inputFile").files.length > 0) {
var parts = document.getElementById("inputFile").value.split("\");
var filename = parts[parts.length– 1];
var file = document.getElementById("inputFile").files[0];
var binary = ";
var restUrlatt = "http://[SharePoint Site]/_api/web/lists/GetByTitle('Testing')/items(" + data.d.ID + ")/AttachmentFiles/add(FileName='" + file.name + "')";
getFileBuffer(file).then(
function(buffer) {
var bytes = new Uint8Array(buffer);
alert(bytes.length);
for (var b = 0; b < bytes.length; b++) {
binary += String.fromCharCode(bytes[b]);
}
$http.post(restUrlatt, {
__metadata: {
type: "SP.Data.TestingListItem"
},
binaryStringRequestBody: true,
body: binary
}).success(function(data) {
//resolve the new data
console.log("success");
dfd.resolve(data.d);
}).error(function(data) {
dfd.reject("failed to add book");
console.log("error");
});
return dfd.promise;
});
}
dfd.resolve(data.d);
}).error(function(data) {
dfd.reject("failed to add book");
console.log("error");
});
return dfd.promise;
})
};
Leave a comment