我希望SharePoint能够按原样运行,但在将文档返回给用户之前,我希望选择拦截文档并进行特定于用户的添加/更改。
所以基本上: 1)你甚至可以调整负责在SharePoint中“打开”文件的代码吗? 2.如果是,您是否可以在特定用户的基础上进行此操作(例如,除了给定的用户类别之外,为每个人使用默认代码) 3)假设1和2,你能拦截任何即将返回的文件并对其进行更改(甚至可能用一个不同的文件替换它)?
(我不希望在IIS级别这样做)
谢谢, 瑞德
答案 0 :(得分:1)
我认为你需要做的是为文档创建一个HttpHandler(例如Word文件 - doc / docx)。这是link可能会有所帮助。此外,this链接提供了有关如何创建HttpHandlers的详细信息。您可能需要将以下内容添加到您站点的web.config文件中:
我不太确定如何挂钩你的处理程序来处理你的文件,因为我不知道文件扩展名是什么,但你明白了。
答案 1 :(得分:0)
“打开档案”是什么意思?查看列表项或打开文档本身?
无论哪种方式,您都可以使用SharePoint Designer编辑列表表单。或者,您可以为该列表创建代码隐藏,并使用OnLoad事件或一些javascript来下载附件链接。
或者,在您的情况下,如果要为文档添加水印,则可以创建代码隐藏(practical example here),覆盖OnLoad事件(打开表单时),访问这些文档并设置参数。
然后OnUnload您可以再次修改文档以恢复更改。
如果多个用户想要访问同一文档怎么办?那么,你可以用javascript隐藏原始文档并显示为该用户准备的副本,并在OnUnload上丢弃它。
但是,只有当您从网络访问文档而不是Outlook时,它才会起作用。
答案 2 :(得分:0)
创建一个功能,将一个SPItemEventReceiver添加到库中并覆盖ItemUploded。或者使用此tool将事件添加到lybrary。
答案 3 :(得分:0)
是否可以使用自定义页面,加载文档并在将其发送到客户端之前对其进行处理?
这个问题让我更喜欢“如何让所有相关链接指向此重定向页面而不是直接指向文档?”
当然这可能是不可能的,特别是在通过WebDAV处理文档的情况下
答案 4 :(得分:0)
HTTPHandler是IIS / Asp.Net / SharePoint堆栈中唯一可以修改发送给用户的文档的位置。至于这是在SharePoint之外,当您认为HTTPHandler是Asp.Net的一部分并且SharePoint是Asp.Net应用程序时,它并不是真的。
如果您真的想要,您仍然可以将您的代码打包并部署为SharePoint解决方案,甚至让功能的激活自动更改web.config以激活您的处理程序。