在上一章SPServices介绍之五中介绍了如何使用SPServices启动工作流,这篇文章介绍一下如何使用SPServices来上传附件。我是参考了以下两篇文章:
How to: Upload a file by using the REST API and jQuery
Uploading Attachments to SharePoint Lists Using SPServices
文章中讲的很细,所以这里直接上代码了,新建一个application page,然后把下面的代码粘贴到对应的PageHead和Main这两个place holder中,部署之后运行即可。
需要注意的有两个地方,第一个是需要引用sp.runtime.js文件,另外需要浏览器支持HTML5.
<asp:Content ID="PageHead" ContentPlaceHolderID="PlaceHolderAdditionalPageHead" runat="server">
<script type="text/javascript" src="jquery-1.11.1.min.js"></script>
<script type="text/javascript" src="jquery.spservices-2014.01.min.js"></script>
<script type="text/javascript" src="/_layouts/15/sp.runtime.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("#uploadfilebutton").on("click", function () {
if ($("#fileuploader").prop("files").length === 0) {
alert("Please select file first");
return;
}
if (!window.FileReader)
{
alert("Browser does not support HTML5");
return;
}
var parts = $("#fileuploader").prop("value").split("\\");
var fileName = parts[parts.length - 1];
var file = $("#fileuploader").prop("files")[0];
//Get the local file as an array buffer
var getFileBuffer = function (file) {
var deferred = $.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(file);
return deferred.promise();
}
getFileBuffer(file).then(function (buffer) {
var bytes = new Uint8Array(buffer);
var content = new SP.Base64EncodedByteArray();
for (var i = 0; i < bytes.length; i++) {
content.append(bytes[i]);
}
$().SPServices({
operation: "AddAttachment",
listName: "Tasks",
listItemID: 1,
fileName: fileName,
attachment: content.toBase64String(),
completefunc: function (xData, Status) {
if (Status === "success") {
alert("Upload successfully.");
}
else {
alert("Upload failed.");
}
}
});
});
});
});
</script>
</asp:Content>
<asp:Content ID="Main" ContentPlaceHolderID="PlaceHolderMain" runat="server">
<input type="file" id="fileuploader" />
<input type="button" id="uploadfilebutton" value="Upload File" />
</asp:Content>
下一篇文章 SPServices介绍之七将会介绍如何使用SPServices实现智能提示功能。