SharePoint 通过控制上传下载对文件进行加密解密(二)
这篇文章将介绍如何控制下载事件,要控制下载,要知道文档库文档下载方式有哪几种:
1.点击标题下载文档
2.通过点击按钮“下载副本”下载(这种下载容易被忽略)
解决方案:
1.针对“点击标题下载文档”要用“HttpHandler”截获下载流事件。
首先写个截获的事件类,具体如下:
class MyDownload : IHttpHandler { /// <summary> /// 通过实现 IHttpHandler 接口的自定义 HttpHandler 启用 HTTP Web 请求的处理。 /// </summary> /// <param name="context">HttpContext 对象,它提供对用于为 HTTP 请求提供服务的内部服务器对象(如 Request、Response、Session 和 Server)的引用。 </param> public void ProcessRequest(HttpContext context) { string url = context.Request.Url.OriginalString; SPSecurity.RunWithElevatedPrivileges(delegate() { using (SPSite oSite = new SPSite(url)) { using (SPWeb oWeb = oSite.OpenWeb()) { SPList list = oWeb.GetList(url); 。。。。。。。 if (items != null && items.Count > 0) { //获取文件流 //准备 //下载加密 //输出 } } } }); } }
然后修改web.config,如下:
<add verb="*" path="*.doc" type="Sinopec.Moss.CustomUploadPage.MyDownload, Sinopec.Moss.CustomUploadPage, Version=1.0.0.0, Culture=neutral, PublicKeyToken=1e537c5b8c721ccf" /> <add verb="*" path="*.docx" type="Sinopec.Moss.CustomUploadPage.MyDownload, Sinopec.Moss.CustomUploadPage, Version=1.0.0.0, Culture=neutral, PublicKeyToken=1e537c5b8c721ccf" /> <add verb="*" path="*.xls" type="Sinopec.Moss.CustomUploadPage.MyDownload, Sinopec.Moss.CustomUploadPage, Version=1.0.0.0, Culture=neutral, PublicKeyToken=1e537c5b8c721ccf" /> <add verb="*" path="*.xlsx" type="Sinopec.Moss.CustomUploadPage.MyDownload, Sinopec.Moss.CustomUploadPage, Version=1.0.0.0, Culture=neutral, PublicKeyToken=1e537c5b8c721ccf" />
我这里只是控制了下载word和excel,当然可以继续添加其他文件类型控制。
2.针对“下载副本”方式下载就简单了,只要重写Download.aspx文件的下载事件就ok了。 方法与重写Upload.aspx文件一样。
3.当然也可以删除"下载副本"功能,只需要控制电击下载文档功能:
Go to your 12 hive\TEMPLATE\LAYOUTS\1033 folder. Open up the Core.js file. Find the function AddSendSubMenu. Go to the last 3 lines:
strAction = "STSNavigate('" + ctx.HttpRoot + "/_layouts/download.aspx?" +"SourceUrl=" + currentItemEscapedFileUrl + "&Source=" + GetSource() +"&FldUrl=" + escapeProperly(ctx.SendToLocationUrl) + "')"; ;
menuOption = CAMOpt(sm, L_DownloadACopy_Text, strAction, "");
menuOption.id = "ID_DownloadACopy";
请参考http://www.cnblogs.com/jindahao/articles/2361353.html博客。
努力过就不会后悔