我使用asp.net 3.5和C#。弹出在asp.net保存图像
我有一个图像,我想用户可以下载。像,会有一个下载按钮或链接。当用户点击这个链接时,他会弹出一个提示,将该图像保存到他的桌面。
我试图与
<a href ="path" > </a>
但它是在其他页面打开图像,我希望用户被提示保存或查看图像,
请帮助
谢谢提前
我使用asp.net 3.5和C#。弹出在asp.net保存图像
我有一个图像,我想用户可以下载。像,会有一个下载按钮或链接。当用户点击这个链接时,他会弹出一个提示,将该图像保存到他的桌面。
我试图与
<a href ="path" > </a>
但它是在其他页面打开图像,我希望用户被提示保存或查看图像,
请帮助
谢谢提前
您需要拥有另一个页面,或者更好的是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>
您需要编写IHttpHandler
服务器图像以及Content-Disposition
标头。
例如:
Response.AppendHeader("Content-Disposition", "attachment; filename=\"MyImage.png\"");
Response.TransmitFile(path);
你很可能会通过在查询字符串的图像名称。
如果是这样,请确保它不包含/
或\
,否则攻击者将能够读取任意文件。
你总是可以限制允许使用,或者至少,验证它们位于图像目录的路径。确保你没有任何恶作剧并将其限制为一个名字很重要,这可能是最简单的方法。 – tvanfosson 2010-05-26 20:00:18
谢谢!这解决了我的问题。 – Zerotoinfinity 2010-05-26 19:44:42