我正在使用asp.net 3.5和C#。
我有一个我希望用户可以下载的图像。 比如,会有一个下载按钮或链接。当用户点击此链接时,系统会弹出提示,将该图像保存到桌面。
我试过
<a href ="path" > </a>
但它正在打开其他页面中的图像,我希望系统提示用户保存或查看图像,
请帮助
提前致谢
答案 0 :(得分:3)
您需要编写一个IHttpHandler
来提供图像以及Content-Disposition
标题。
例如:
Response.AppendHeader("Content-Disposition", "attachment; filename=\"MyImage.png\"");
Response.TransmitFile(path);
您可能会在查询字符串上传递图像名称
如果是,请确保其中不包含/
或\
,否则攻击者将能够读取任意文件。
答案 1 :(得分:0)
你需要有另一个页面,或者更好的是,还有一个HttpHandler,它将图像路径作为查询字符串的一部分,或者作为post参数将发送响应并将Content-Disposition设置为附件。以这种方式设置内容配置将使浏览器显示文件下载对话框。一种稍微简单的方法,虽然它取决于用户做一些额外的事情,只是让链接在新页面中打开图像,让用户右键单击它并执行“另存为”。
<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>