当用户点击另一个ASP.NET页面的链接时,是否可以将图像(或任何文件类型)输出到下载链接?
我有文件名和byte []。
<a href="getfile.aspx?id=1">Get File</a>
...其中getfile返回文件而不是转到getfile.aspx页面。
答案 0 :(得分:19)
你真的想要.ashx for that;)
public class ImageHandler : IHttpHandler
{
public bool IsReusable { get { return true; } }
public void ProcessRequest(HttpContext ctx)
{
var myImage = GetImageSomeHow();
ctx.Response.ContentType = "image/png";
ctx.Response.OutputStream.Write(myImage);
}
}
答案 1 :(得分:5)
How to Create Text Image on the fly with ASP.NET
这样的事情:
string Path = Server.MapPath(Request.ApplicationPath + "\image.jpg");
Bitmap bmp = CreateThumbnail(Path,Size,Size);
Response.ContentType = "image/jpeg";
bmp.Save(Response.OutputStream,System.Drawing.Imaging.ImageFormat.Jpeg);
bmp.Dispose();
答案 2 :(得分:4)
以下是我过去的做法:
Response.Clear();
Response.Buffer = true;
Response.AddHeader("Content-Disposition", string.Format("inline;filename=\"{0}.pdf\"",Guid.NewGuid()));
Response.ContentType = @"application/pdf";
Response.WriteFile(path);
答案 3 :(得分:1)
是的,您必须完全清除响应,并将图像字节数据替换为字符串,并且您需要确保根据图像类型设置内容类型的响应标头
答案 4 :(得分:1)
是的,这是可能的。您需要设置Response对象的两个部分:Content-Type和HTTP Header。 MSDN documentation包含响应对象的详细信息,但主要概念非常简单。只需将代码设置为类似的内容(对于Word文档)。
Response.ContentType="application/ms-word";
Response.AddHeader("content-disposition", "attachment; filename=download.doc");
有一个更完整的示例here
答案 5 :(得分:0)
getfile.aspx的代码隐藏代码必须有content-type,浏览器会知道它是图像或未知文件,并允许您保存它。
在asp.net中,您可以使用ContentType对象设置Response,即
Response.ContentType = "image/GIF"
Here您有动态生成图片的教程
答案 6 :(得分:0)
...的ashx
public class ImageHandler : IHttpHandler
{
public void ProcessRequest(HttpContext ctx)
{
string path = ".....jpg";
byte[] imgBytes = File.ReadAllBytes(path);
if (imgBytes.Length > 0)
{
ctx.Response.ContentType = "image/jpeg";
ctx.Response.BinaryWrite(imgBytes);
}
}
public bool IsReusable
{
get {return false;}
}
}