Recently, I have been working through the process of trying to accomplish as many basic SharePoint tasks with both CSOM and REST as possible. My goal is to build a deeper understanding of what operations work in both approaches as well as strengths and limitations. In the case of document uploading, the CSOM approach is only good for files up to 1.5MB whereas REST is good up to 2GB. This makes understanding the REST approach critical, but I was struggling to get it working using the jQuery ajax method because the documentation is not great. In this post, I’ll save you the heartache I went through and just show you how to do it in both approaches.
Selecting Files
The first thing to set up is the control used for selecting files from the web page. This is a pretty simple use ofinput controls:
<input : arrayBuffer.byteLength
},
success: function (data) {
deferred.resolve(data);
},
error: function (err) {
deferred.reject(err);
}
});
},
function (err) {
deferred.reject(err);
}
);
return deferred.promise();
},
getFileBuffer = function (file) {
//See previous code
};
return {
upload: upload
};
}();
Again, once you have the library, uploading the file is easy. Here is the REST version of the upload method.
WingtipToys.Rest.Libs.upload("/apps/LibraryOperations/REST%20Documents", filename, file)
.then(
function (data) {
alert("Uploaded successfully");
},
function (err) {
alert(JSON.stringify(err));
}
);
Conclusions
As with most things in programming, it’s pretty simple when someone shows you how. Sparse documentation on MSDN, however, gave me a couple of days of agony. (I'll probably get a laugh when a reader points me at a full code sample somehere on MSDN that I missed.)
The big takeaway from this effort is that now you can easily use the REST interface for file uploading, which is good for files up to 2GB. Because CSOM is limited to 1.5MB, it seems like there is really little point to using anything but REST.