使用c#以编程方式打开安全的Sharepoint文件

时间:2013-03-07 17:38:39

标签: sharepoint permissions dialog httpresponse user-permissions

我需要帮助以编程方式打开在线Sharepoint文件。这些文件需要在Sharepoint上得到保护(这样用户就无法进入它们),但我还需要使用我的webpart以某种方式访问​​它(这将检查安全性)。通常,您可以使用链接到Sharepoint文件的超链接,但我们不希望人们共享这些超链接,因此无法使用。

我希望用户单击一个链接,让他们看到该文件的“打开,保存,关闭”对话框菜单。

我试过这个

            String fileName = @"file.txt";
            String filePath = @"~online filePath/"; 

            System.Web.HttpResponse response = System.Web.HttpContext.Current.Response;
            response.ClearHeaders();
            response.ClearContent();
            response.Clear();
            response.ContentType = "text/plain"; 
            //or whatever file type, I can code that later
            response.AddHeader("Content-Disposition", "attachment; Filename=" + fileName + ";");
            response.TransmitFile(filePath + fileName);
            //response.Flush();
            response.End();

不幸的是,虽然这对本地文件(C:// ...)工作正常,但当我在我的网页上尝试这个时,我只收到一个包含当前页面源代码的文本文档。不知道为什么。

至于处理权限,我计划使用提升的权限让程序获得对文件的访问权限。

感谢您的帮助,谢谢。

1 个答案:

答案 0 :(得分:0)

以下是提供可供SharePoint下载的文件的示例代码

using (SPWeb web = SPContext.Current.Web)
{
    //Get fileName and filePath here
    response.AddHeader("Content-disposition", "attachment; filename=" + fileName);
    response.ContentType = "application/octet-stream";
    SPFile file = web.GetFile(filePath);
    byte[] fileBytes = file.OpenBinary();
    response.OutputStream.Write(fileBytes, 0, fileBytes.Length);
    response.End();
}

这是否有帮助,或者您在查找fileName和filePath时遇到问题?