我在varbinary列中的数据库(SQlServer 2008 R2)中有图像。我的报告是在Visual Studio 2010中的ASP.net 3.5中开发的。在我在表格中的报告中,我使用了一个Image,将MIME类型设置为image / jpeg,将图像源设置为Database&图像在报告中正确显示。一切正常!!现在我的问题是,我想添加一个指向该图像的超链接,以便当用户点击图像时,它会以其原始格式在另一个窗口/选项卡中打开。这将有助于用户更仔细地查看图像。 我尝试添加超链接 - 转到URL - 表达式
=“http:// localhost:49170 / MtkMobileDeposit_FailedTransaction / Account / ReportByUserName.aspx?BackImageOriginal =”&领域!BackImageOriginal.Value
但我不能让它只显示图像。相反,它会在新选项卡中显示整个报告。如何首先获取图像的URL?请帮忙。
谢谢, SDD
答案 0 :(得分:1)
您最好的办法是使用httphandler来处理您的请求。
创建一个将接受记录ID的ImageHandler.ashx。然后你可以得到图像的字节数组,然后把它放到屏幕上。
您的新网址将如下所示
“/ ImageHandler.ashx?Record_ID =”&领域!RecordId.Value
public class ImageHandler : IHttpHandler
{
public int Record_ID
{
get { return Convert.ToInt32(HttpContext.Current.Request.QueryString["Record_ID"]); }
}
public void ProcessRequest(HttpContext context)
{
// get image from database into a byte array
Component.ImageController objImageController = new Component.ImageController();
Component.ImageInfo objImageInfo = objImageController.getImage(Record_ID);
byte[] byteArray = objImageInfo.photo;
// output it to the screen
context.Response.Clear();
context.Response.ContentType = "image/jpeg";
context.Response.BinaryWrite(byteArray);
context.ApplicationInstance.CompleteRequest();
}
public bool IsReusable
{
get
{
return false;
}
}
}