Dubai Call Girls Starlet O525547819 Call Girls Dubai Showen Dating
RESTAPI_SPHOSTED_APP
1. I had very strange experience when I had been interview yesterday, there three guys, I was asked to
write a code to upload multiple documents to document library neither laptop was given nor JS file
limit in sharepoint or REST API limit being asked, I was explaining code behind files usage, either
cross domain or single domain. Infact they are not aware of broader view sharepoint usage and
limitations. At this age of 40 people still ask to code on paper to clear interview. If they would have
given laptop and assignment that would have made sense to me.
2. Reference: Microsoft has already given reference model for this, all we need to do is use it. There are
many MS article for this. However Here is the one up to 2GB file size.
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<script type="text/javascript" src="/SiteAssets/jquery-1.9.1.min.js"></script>
</head>
<body>
<div id="FUdiv"></div>
<input type="button" id="btnUpload" value="Add File">
<script type="text/javascript">
$(document).ready(function(){
$("#btnUpload").on("click",function(){
var successFileUp = uploadFile("");
successFileUp.done(function(){
alert("File Uploaded!!!");});
});
});
jQuery(document).ready(function () {
$('#FUdiv').html('<input type="file" id="FileUpload" multiple/>');
if (!window.FileReader) {
alert('This browser does not support the FileReader API.');
}
});
function uploadFile(ID) {
var deferred = $.Deferred();
var serverRelativeUrlToFolder ='testdocs';
var fileInput = jQuery('#FileUpload');
var serverUrl = _spPageContextInfo.webAbsoluteUrl;
3. (function Tasks(i,callback)
{
if(i<fileInput[0].files.length)
{
var success = ProcessFiles(i);
success.done(function(){Tasks((i+1),callback);});
}
else
{
callback();
}
})(0,function(){deferred.resolve();});
function ProcessFiles(ind)
{
var deferred = $.Deferred();
var getFile = getFileBuffer(ind);
getFile.done(function (arrayBuffer) {
var addFile = addFileToFolder(arrayBuffer,ind);
addFile.done(function (file, status, xhr) {
var getItem = getListItem(file.d.ListItemAllFields.__deferred.uri);
getItem.done(function (listItem, status, xhr) {
var changeItem = updateListItem(listItem.d.__metadata,ind);
changeItem.done(function (data, status, xhr) {
deferred.resolve();
});
changeItem.fail(onError);
});
getItem.fail(onError);
});
addFile.fail(onError);
});
getFile.fail(onError);
return deferred.promise();
}
function getFileBuffer(ind) {
var deferred = jQuery.Deferred();
var reader = new FileReader();
reader.onloadend = function (e) {
deferred.resolve(e.target.result);
}
reader.onerror = function (e) {
4. deferred.reject(e.target.error);
}
reader.readAsArrayBuffer(fileInput[0].files[ind]);
return deferred.promise();
}
function addFileToFolder(arrayBuffer,ind) {
var fileName = fileInput[0].files[ind].name;
var fileCollectionEndpoint = String.format("{0}/_api/web/getfolderbyserverrelativeurl('{1}')/files"
+"/add(overwrite=true, url='{2}')",serverUrl, serverRelativeUrlToFolder, fileName);
return jQuery.ajax({
url: fileCollectionEndpoint,
type: "POST",
data: arrayBuffer,
processData: false,
headers: {
"accept": "application/json;odata=verbose",
"X-RequestDigest": jQuery("#__REQUESTDIGEST").val(),
"content-type": "application/json;odata=verbose"
}
});
}
function getListItem(fileListItemUri) {
return jQuery.ajax({
url: fileListItemUri,
type: "GET",
headers: { "accept": "application/json;odata=verbose" }
});
}
function updateListItem(itemMetadata,ind) {
var newName = ID.toString()+'-'+fileInput[0].files[ind].name;
var body = String.format("{{'__metadata':
{{'type':'{0}'}},'FileLeafRef':'{1}','Title':'{2}','ParentID':'{3}'}}",
itemMetadata.type, newName, newName, ID);
return jQuery.ajax({
url: itemMetadata.uri,
5. type: "POST",
data: body,
headers: {
"X-RequestDigest": jQuery("#__REQUESTDIGEST").val(),
"content-type": "application/json;odata=verbose",
"IF-MATCH": itemMetadata.etag,
"X-HTTP-Method": "MERGE"
}
});
}
return deferred.promise();
}
function onError(error) {
alert(error.responseText);
}
</script>
</body>
</html>
The same thing with SP hosted app.