【问题标题】:Open any file from asp.net从 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

标签: c# .net asp.net visual-studio file-io


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-05
    • 2011-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-08
    相关资源
    最近更新 更多