HTTP处理程序限制文件仅为只读/仅查看而不是可下载的C#ASP.NET WebPage

时间:2012-05-30 20:51:48

标签: c# asp.net file download httphandler

我有一个带有在线文件​​库的客户端。 她希望能够在表单库" ReadOnly"中创建一些她的文件。

现在,当您查看文件库页面时,会显示所有文件。

当您单击某个文件时,它会打开标准浏览器窗口并询问您是否要打开或下载该文件。基本上她想限制一些文件只允许你打开而不是下载文件。

我很确定这是不可能的,因为这是一种用户偏好的浏览器设置类型的东西,但我想我得到一些输入,然后才告诉她。

现在我使用的是一个名为文件处理程序的asp.net HTTP Handler。

    public void ProcessRequest(HttpContext context)
    {
        if (this.FileName != null)
        {
            string path = String.Concat(ConfigurationManager.UploadsDirectory, this.FileName);
            string contentType = Utility.IO.File.GetContentType(this.FileName);

            if (File.Exists(path) == true)
            {
                context.Response.Buffer = true;
                context.Response.Clear();
                context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
                context.Response.ContentType = contentType;
                context.Response.AddHeader("content-disposition", String.Format("inline; filename={0}", (Url.Encode(this.DisplayFileName))));
                context.Response.TransmitFile(path);
                context.Response.Flush(); 
                context.Response.End();
            }
            else
            {
                throw new HttpException(404, "File Not Found");
            }
        }
    }

此函数(Utility.IO.File.GetContentType)是一个简单的实用程序函数,用于根据文件扩展名获取内容类型。

无论如何,我可以在此代码中更改任何内容以使其成为只读文件或"仅查看"。也许我可以添加一些类型的标题?

1 个答案:

答案 0 :(得分:0)

Answering my own question. This was not possible to do.