SPServices介绍之六:上传附件

本文档详细阐述了如何利用SPServices库在SharePoint 2013中上传文件作为列表附件。内容中提到了参考的REST API和jQuery方法,并提供了一个应用页面的示例代码,强调了需引入sp.runtime.js文件以及依赖HTML5功能。

在上一章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实现智能提示功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值