簡體   English   中英

來自Reporting Services中數據庫的圖像

[英]Image from DB in Reporting Services

從本質上講,我的基本問題是我無法在SSRS中顯示圖像。 我得到了一個帶有“ x”的小盒子。 這些圖像我開發並控制的Web應用程序存儲在SQL db中 ...由Web服務處理,我也可以控制。

我想知道我是否出錯了多個地方:

在客戶端上,我使用javascript FileReader API即時呈現上載圖像的縮略圖以顯示給用戶。 var reader = new FileReader();

調用reader.readAsDataURL(file); 我將數據放入變量imageURL = reader.result並進行了一些字符串操作以從(base64編碼的)文件數據字符串中刪除data:image/jpeg;base64, ,然后最終使用SOAP信封將此變量傳遞給服務器。

因此, 在服務器上 ,圖像數據由我的Web服務(只是.asmx /不是WCF)作為字符串數據類型接收,然后最終作為SQL VARCHAR(MAX)插入數據庫。

報表服務中,我放入一個圖像控件,然后將圖像源設置為“數據庫”,將字段從我的數據集中設置為我的照片字段,並將MIME類型設置為jpeg ...我相信這都是適當的。

所以...我相信我在SSRS中沒有做錯任何事情,但是也許在客戶端上我在如何發送數據方面做錯了什么? 或者,也許我選擇存儲的圖像數據不正確。 我確實可以訪問服務器計算機,因此也許需要將圖像保存在文件系統中,但是即使是我目前的方法,它似乎仍然可以正常工作。

如果需要提供更多信息,請告訴我。

要解決您的問題,您需要將數據庫字段更改為:

  • SQL 2012之前的版本-圖像數據類型
  • SQL 2012-varbinary(max)作為圖像數據類型已棄用

您還需要更改Web服務以上傳字節流而不是字符串。

即使您使用的是SQL 2008或2008R2,我也建議您使用varbinary數據類型來將來對數據庫模型進行打樣。

要為SSRS報告創建測試數據源,請使用以下SQL生成名為ImageTest的表。 您需要提供將上傳到表格中的圖片的文件路徑。

CREATE TABLE ImageTest (
  image_data VARBINARY(MAX));

INSERT INTO ImageTest (image_data)
SELECT image_data
FROM OPENROWSET(
        BULK N'<location of an image file>',
        SINGLE_BLOB) AS ImageSource(image_data);

要嘗試在SSRS中創建表格,請使用

  • 指向表ImageTest的數據集
  • 向報表添加圖像控件,並將其圖像源指向image_data列

預覽報告時,您應該使用存儲在數據庫中的圖像來查看報告。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM