我正在尝试将图片添加到报告中。图像src url是IHttpHandler,它接受一些查询字符串参数。这是一个例子:
<img src="Image.ashx?item=1234567890&lot=asdf&width=50" alt=""/>
我在单元格中添加了图像,然后将来源设置为外部,将值设置为以下表达式:
="Image.ashx?item="+Fields!ItemID.Value+"&lot="+Fields!LotID.Value+"&width=50"
但是当我查看报告时,它会将图像html呈现为:
<IMG SRC="" />
我错过了什么?
更新
即使我将值设置为“image.jpg”,它仍会呈现空的src属性。我不确定它是否有所作为,但我在远程处理模式下使用VS 2008 ReportViewer控件。
更新
我能够使用绝对路径(http://server/path/to/http/handler)在报表设计器(VS 2005)中显示图像。但它们没有显示在Report Manager网站上。我甚至设置了Unattended Execution Account,可以访问外部网址。
答案 0 :(得分:4)
我有一份SSRS报告,显示我们在工作中支持的网站用户所在国家/地区的信息。这基于IIS日志数据。在此报告中,表格的第一列是一个图像字段,其中包含每个国家/地区的小标志.gif。我遇到了上述问题中描述的相同问题。根据国家/地区代码在报告查询中计算外部图像的路径。我最初将URL设置为指向美国国旗的http://www.mystaticcontent.com/fotwimg/us.gif等等。我得到的只是报告中显示的红色X破碎图像。然后我发现this MSDN article为我解决了这个问题。
这就是我对报告所做的工作:
答案 1 :(得分:2)
答案 2 :(得分:2)
我也有这个问题..
我查看了SSRS错误日志和IIS服务器日志。一些调查结果:
webserver!ReportServer_0-116!14cc!01/09 / 2012-12:20:29 :: i INFO: 处理报告。 Report ='/ Path / ReportName',Stream ='' ui!ReportManager_0-115!7b8!01/09 / 2012-12:20:29 ::未处理的异常: System.Web.HttpException:文件不存在。在 System.Web.StaticFileHandler.GetFileInfo(字符串 virtualPathWithPathInfo,String physicalPath,HttpResponse response)
在System.Web.StaticFileHandler.ProcessRequestInternal(HttpContext 上下文) System.Web.DefaultHttpHandler.BeginProcessRequest(HttpContext context, AsyncCallback回调,对象状态) System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 在System.Web.HttpApplication.ExecuteStep(IExecutionStep步骤, 布尔和放大器; completedSynchronously)
即。类似于(1)SSRS下载/Page.aspx,它提供Content-Type:image / jpg的图像; (2)SSRS将其保存到临时文件夹,文件名如tempname.aspx.jpg; (3)SSRS查找tempname.aspx以将图像合并到报告中; (4)错误
我想你可以通过在代码隐藏中处理.jpg请求来测试这个...不幸的是,这超出了我的ASPX技能。
答案 3 :(得分:0)
我的情况:根据产品代码从localhost加载。
Image.Source =“http:// LOCALHOST / IMG /”+ Fields!CODE.value +“.jpg”
问题:有时上传的文件扩展名为“.png”;因此需要进行FileExists验证。
解决方案: 1)添加辅助表
PRODUCT_PHOTO_EXTENSION
id(FK引用PRODUCT) extension(varchar)
2)创建商店程序。在sql上执行FileExists验证并存储在PRODUCT_PHOTO_EXTENSION.extension中找到的扩展名:
insert into PRODUCT_PHOTO_EXTENSION
SELECT A.id,'.JPG' FROM PRODUCT A LEFT JOIN PRODUCT_PHOTO_EXTENSION AF ON A.id=AF.id WHERE AF.id IS NULL AND Matriz is null and dbo.FileExists('D:\directory\' + code + '.jpg')=1
insert into PRODUCT_PHOTO_EXTENSION
SELECT A.id,'.PNG' FROM PRODUCT A LEFT JOIN PRODUCT_PHOTO_EXTENSION AF ON A.id=AF.id WHERE AF.id IS NULL AND Matriz is null and dbo.FileExists('D:\directory\' + code + '.jpg')=1
3)使用此字段加载图像文件。 (SSRS; image.source表达式)
Iif(Fields!EXTENSION.Value<>"", "http://LOCALHOST/IMG/" & Fields!CODE.Value & Fields!EXTENSION.Value, "" )
4)结果:根据扩展名加载图片;避免那个红色的“x”。
希望有所帮助