从 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 中下载任何类型的文件?
ASP.NET 3.5 - 在 pdf 查看器中直接从流中打开 PDF