从 asp.net 打开任何文件

Posted

技术标签:

【中文标题】从 asp.net 打开任何文件【英文标题】:Open any file from asp.net 【发布时间】:2011-10-07 16:03:21 【问题描述】:

如何在 ASP.NET 中以编程方式打开由路径指定的任何文件?

我尝试了下面的 sn-p 但它读取文件的内容而不是打开文件:

string fileName = @"C:\deneme.txt";        
StreamReader sr = File.OpenText(fileName);        
while (sr.Peek() != -1)        
            
    Response.Write(sr.ReadLine() + "<br>");        
        
sr.Close();

我也试过File.Open method

【问题讨论】:

如果不阅读内容,您实际上想做什么? 你到底想做什么?将文件内容作为字符串获取?将文件作为流打开?获取文件内容为 byte[]? 问题是什么?你想做什么? File.Open 将打开一个文件 - 您对此有什么具体问题吗?文件打开后你在做什么? but it reads the contents of the file instead of opening the file 是什么意思?根本不打开文件怎么读取内容? 打开文件不就是读取内容吗?? :P 【参考方案1】:

你可以Response.Redirect提交,如果你只是打开它

或者如果正在下载文件,您可以使用以下代码;

    public void DownloadFile(string fileName)
    
        Response.Clear();
        Response.ContentType = @"application\octet-stream";
        System.IO.FileInfo file = new System.IO.FileInfo(Server.MapPath(FileName));
        Response.AddHeader("Content-Disposition", "attachment; filename=" + file.Name);
        Response.AddHeader("Content-Length", file.Length.ToString());
        Response.ContentType = "application/octet-stream";
        Response.WriteFile(file.FullName);
        Response.Flush();
    

【讨论】:

+1。重定向效果不好,因为它没有设置 200 HTTP 状态。但是方法很棒! @saj:response.redirect 会使用什么参数? Response.Redirect 适用于可以在浏览器中打开的文件,例如 pdf、word 和 excel 文件。将文件路径作为参数传递,正如 VMAtm 提到的那样,它必须是 http 路径。因此,如果您的文件超出根虚拟目录路径的范围,则无法使用【参考方案2】:

如果您希望在客户端打开文件,请创建一个 HTTP Handler 并在您的响应中设置适当的 mime 类型,然后再从您的处理程序流式传输它。

关于更多信息,我之前问过你的问题。

how to open file with its application

【讨论】:

以上是关于从 asp.net 打开任何文件的主要内容,如果未能解决你的问题,请参考以下文章

使用 FileResult 在 Asp.Net MVC 中下载任何类型的文件?

如何从php调用“asp.net api上传文件”

ASP.NET 3.5 - 在 pdf 查看器中直接从流中打开 PDF

如何从 ASP.NET 的白名单中过滤 UrlReferrer?

通过 asp.net 从控制台读取输出

文件共享仅通过 localhost asp.net 从已安装的驱动器打开、编辑和保存