2010-05-26 43 views
2

我使用asp.net 3.5和C#。弹出在asp.net保存图像

我有一个图像,我想用户可以下载。像,会有一个下载按钮或链接。当用户点击这个链接时,他会弹出一个提示,将该图像保存到他的桌面。

我试图与

<a href ="path" > </a> 

但它是在其他页面打开图像,我希望用户被提示保存或查看图像,

请帮助

谢谢提前

回答

0

您需要拥有另一个页面,或者更好的是HttpHandler,它将图像路径作为查询字符串的一部分,或作为发送带有Content-Disposition属性设置的附件的post参数。以这种方式设置内容配置将导致浏览器显示文件下载对话框。一个稍微简单的方法,尽管它取决于用户做了一些额外的事情,只需要让链接在新页面中打开图像,并让用户右键单击并执行“另存为”。

<a href="/path/to/handler?image=name-of-image-file">Download</a> 

<a href="/path/to/image" target="_blank"> 
    Load Image in New Window then Use Save As</a> 
+0

谢谢!这解决了我的问题。 – Zerotoinfinity 2010-05-26 19:44:42

3

您需要编写IHttpHandler服务器图像以及Content-Disposition标头。

例如:

Response.AppendHeader("Content-Disposition", "attachment; filename=\"MyImage.png\""); 
Response.TransmitFile(path); 

你很可能会通过在查询字符串的图像名称。
如果是这样,请确保它不包含/\,否则攻击者将能够读取任意文件。

+1

你总是可以限制允许使用,或者至少,验证它们位于图像目录的路径。确保你没有任何恶作剧并将其限制为一个名字很重要,这可能是最简单的方法。 – tvanfosson 2010-05-26 20:00:18