这篇文章将介绍如何控制下载事件,要控制下载,要知道文档库文档下载方式有哪几种:
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博客。
努力过就不会后悔