最近遇到个需求,要对moss2007中的文档进行加密解密保护,具体需求是上传解密下载时加密(具体原因不做解释)。接到这样的需求第一反应肯定是用EventHandler来解决,实际上EventHandler是无法做到的(无法获取下载事件),在网上找了很多资料都没能直接解决问题。通过实验找到了解决问题的办法具体如下:
1.首先找到事件,就是上传的事件和下载的事件:
上传:修改upload.aspx页面,重写上传事件。重写要注意一些问题:
首先新建个类继承Microsoft.SharePoint.ApplicationPages.UploadPage,具体如何写上传的代码要参考Microsoft.SharePoint.ApplicationPages.dll中的写法(用Reflector反编译)
public class MyUpload : Microsoft.SharePoint.ApplicationPages.UploadPage
{
protected void MyOnSubmit(object o, EventArgs e)
{
if (!this.MultipleUploadMode)
{
this.Page.Validate();
if (!this.Page.IsValid)
{
return;
}
SPContentTypeId empty = SPContentTypeId.Empty;
SPFile spfile = this.UploadFile();
if (spfile == null)
{
return;
}
if (((spfile.CheckOutStatus != SPFile.SPCheckOutStatus.None)) && (spfile.Item != null))
{
SPUtility.Redirect(this.GetEditFormUrl(spfile), SPRedirectFlags.Default, this.Context);
return;
}
}
else
{
SPUtility.Redirect(this.RedirectUrl, SPRedirectFlags.UseSource | SPRedirectFlags.Static, this.Context);
return;
}
SPUtility.Redirect(this.RedirectUrl, SPRedirectFlags.UseSource | SPRedirectFlags.Static, this.Context);
}
}
接下来要修改Upload.aspx页面:
<%@ Assembly Name="Sinopec.Moss.CustomUploadPage, Version=1.0.0.0, Culture=neutral, PublicKeyToken=1e537c5b8c721ccf"%> //添加刚才写类
<%@ Page Language="C#" Inherits="Sinopec.Moss.CustomUploadPage.MyUpload" MasterPageFile="~/_layouts/application.master" %>//修改引用
还要修改上传事件名:
<INPUT id="btnOK" runat="server" Type="button" AccessKey="<%$Resources:wss,multipages_okbutton_accesskey%>" class="ms-ButtonHeightWidth" Value="<%$Resources:wss,multipages_okbutton_text%>" οnclick="javascript:if (!VerifyCommentLength()) return false;" OnServerClick="MyOnSubmit" />
这样上传已经完成,下一篇文章将介绍如何控制下载事件。
努力过就不会后悔