微科社区,轻松开发从此开始! 请登陆 免费注册

微科社区

当前位置:首页 > 企业开发 > SharePoint >

如何在SharePoint 当中使用纯JSOM上传任意二进制文

时间:2016-10-04 23:34  浏览:努力统计中...
在微软的官方网站上有关于如何在SharePoint当中使用JS创建一个简单的文本文件的例子,经过我的思考我觉得结合Html5特性的浏览器,是完全可以通过JS来读取到文件的内容的(这一部分的

在微软的官方网站上有关于如何在SharePoint当中使用JS创建一个简单的文本文件的例子,经过我的思考我觉得结合Html5特性的浏览器,是完全可以通过JS来读取到文件的内容的(这一部分的内容请大家自行去了解),进而可以实现一个纯的JS的文件上传的例子,经过我的不断的实践,终于可以实现纯JS的文件上传了,当然还是参考了如下的文章。

限制有2个:

1、文件不能太大1.5MB以内完全是没有问题,这是JSOM的限制,没有办法突破。

2、浏览器必须是完全支持HTML5的,Chrome完全可以,IE必须11以上。

 

原理:使用FileReader来读取文件的Base64Url流,FileReader.readAsDataURL,然后使用自己写的把Base64的字符转成二进制的函数,把这个二进制的代码传给FileCreationInfomation.Content。

神奇的函数convertDataURIToBinary,我不知道是怎么工作的,如果有兴趣你来解释一下。

看如下的代码:

 1 $(document).ready(function () 2 { 3     // Get the URI decoded host web URL 4     // We will use this to get a context here to write data 5     hostweburl = decodeURIComponent(getQueryStringParameter("SPHostUrl")); 6 }); 7   8 function CreateFile() 9 {10     // Ensure the HTML5 FileReader API is supported11     if (window.FileReader)12     {13         input = document.getElementById("fileinput");14         if (input)15         {16             file = input.files[0];17             fr = new FileReader();18             fr.onload = receivedBinary;19             fr.readAsDataURL(file);20         }21     }22     else23     {24         alert("The HTML5 FileSystem APIs are not fully supported in this browser.");25     }26 }27  28 // Callback function for onload event of FileReader29 function receivedBinary()30 {31     // Get the ClientContext for the app web32     clientContext = new SP.ClientContext.get_current();33     // Use the host web URL to get a parent context - this allows us to get data from the parent34     parentCtx = new SP.AppContextSite(clientContext, hostweburl);
TAG:
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线------