2013-07-10 20 views
1

我正在使用元刷新标记来指向要从服务器下载的文件。我如何使它下载所有文件,而不是在浏览器中打开它们。我在代码中加入meta标签的背后是这样的:ASP.NET Meta刷新强制下载

String filename = filenode.Element("name").Value.ToString(); 
HtmlMeta redirectMetaTag = new HtmlMeta(); 
redirectMetaTag.HttpEquiv = "Refresh"; 
redirectMetaTag.Content = string.Format("2;url=http://example.example.net/example/" + filename); 
this.Header.Controls.Add(redirectMetaTag); 

目前,thie文件如JPG只是作为一个在浏览器

+0

而且......发生了什么? – gustavodidomenico

+1

对不起,请参阅编辑 –

+0

只是为了澄清,你想让浏览器打开一个**另存为**对话框来代替显示图像吗? – gustavodidomenico

回答

0

打开如果要强制浏览器打开一个另存为对话框,您必须为页面添加一对自定义标题。

我sugggest您使用的TransmitFile功能:

Response.ContentType = "image/jpeg"; 
Response.AppendHeader("Content-Disposition","attachment; filename=[your-file-name]"); 
Response.TransmitFile(Server.MapPath("~/images/[your-file-name]")); 
Response.End(); 

它会自动写入文件内容到的OutputStream响应的。

+0

,因为此下载直接发生在response.redirect后,我无法使用response.transmitfile方法。这也使得下载所有类型的文件变得更加困难。任何其他建议? –

+0

你可以,只需创建一个ASP页面,以que querystring或session的形式接收文件名。然后你重定向到这个ASP页面,传递你想要的图像。 – gustavodidomenico

+0

我试图无休止地获取response.transmitfile方法来处理aspx页面的Page_Load事件。你说的是我试过的,直到进入元刷新标签。 –