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博客。

 

 

努力过就不会后悔

posted @ 2012-02-22 13:08  jindahao  阅读(1007)  评论(1编辑  收藏  举报