我有一個問題,存儲爲base64 PostgreSQL數據庫中的圖像轉換成圖像,顯示在網站上。數據類型是bytea,我需要通過cURL獲取數據。PostgreSQL的Base64編碼圖像進行解碼的問題
我與API合作,以連接到客戶端的股票系統返回的XML數據。
我知道存儲圖像這樣的DB是不是一個好主意,但是這是客戶端的系統是如何工作的,它不能被改變,因爲它是由第三方提供的企業解決方案的一部分。
我用下面從圖像表查詢數據庫的PICTURE字段,其中PART = 01000015
$ch = curl_init();
$server = 'xxxxxx';
$select = 'PICTURE';
$from = 'picture';
$where = 'part';
$answer = '01000015';
$myquery = "SELECT+".$select."+FROM+".$from.'+WHERE+'.$where."+=+'".$answer."'";
//Define curl options in an array
$options = array(CURLOPT_URL => "http://xx.xxx.xx.xx/GetSql?datasource=$server&query=$myquery+limit+1",
CURLOPT_PORT => "82",
CURLOPT_HEADER => "Content-Type:application/xml",
CURLOPT_RETURNTRANSFER => TRUE
);
//Set options against curl object
curl_setopt_array($ch, $options);
//Assign execution of curl object to a variable
$data = curl_exec($ch);
//Close curl object
curl_close($ch);
//Pass results to the SimpleXMLElement function
$xml = new SimpleXMLElement($data);
//Return String
echo $xml->row->picture;
我從這個得到的迴應是:System.Byte[]
因此,如果我在PHP中使用base64_decode()我顯然只是解碼字符串「System.Byte []」。
我猜測我需要使用PostgreSQL中DECODE()函數來轉換數據的查詢?不過,我嘗試了大量的組合,但我卡住了。我有一些問題的提示,我不太確定爲什麼如果這是一個糟糕的問題,我很抱歉,我真的需要這個幫助。
(注:我已經更換了IP和$服務器XXXXX安全)
爲了進一步解釋: 客戶端具有基於ASP.NET POS系統和保存數據遠程服務器上的XML文件。我有機會獲得這些數據通過一個API,其中包括一個SQL查詢功能使用定義HTTP /捲曲如下:
http://remoteserver:82/pos.asmx.GetSql?datasource=DATASOURCE&query=MYQUERY
因此,要獲得一個包含我目前usingthe以上代碼的圖片數據的字段。
該查詢是在CURL URL即http://remoteserver:82/pos.asmx.GetSql?datasource=12345&query=SELECT+*+FROM+picture+WHERE+part+=+'01000015'";
然而,這將返回System.Byte[]
代替編碼數據,我可以然後在PHP解碼。
附加信息: PostgreSQL的版本:9.1.3的PostgreSQL在i686-Linux PC的GNU的,由GCC編譯(GCC)4.1.2 20080704(紅帽4.1.2-51),32位
表模式: 可在這裏:http://i.stack.imgur.com/sc8Gw.png
讀取當人們downvote他們應該解釋爲什麼。不幸的是,他們並不總是。在這種情況下,它有點困惑,但這就是爲什麼你要問一個問題。我在這裏主要關心的是,沒有跡象表明PostgreSQL進入圖片的位置;如果這是「客戶端系統如何工作」和「無法更改」,那麼您如何才能更改查詢?如果您確實有能力更改查詢,那麼您應該顯示錶格模式和您詢問的查詢**。 (你的PostgreSQL版本也應該包括在內)。 – 2014-10-07 03:23:51
謝謝,我添加了更多信息。我希望這使事情更清楚? – freakyfirefly 2014-10-07 09:08:10
是的,這有幫助。我永遠不會想象一個足以讓你在HTTP GET URL上提供任意SQL查詢的瘋狂設計。呃,'DROP TABLE客戶;'很多?無論如何,你還需要顯示'picture'表的模式;在'psql'中嘗試'\ d圖片'。 – 2014-10-07 09:24:30