2010-05-19 113 views
1

我目前正在致力於一個名爲的BlackBerry Contacts Sync,並且我堅持在這一點上關於如何同步聯繫人的圖像。圖像如何存儲在數據庫(MySQL)中以及如何檢索它們?BlackBerry聯繫人照片

+0

嗨!你確定這是關於MySQL數據庫嗎?數據庫在哪裏部署? – 2010-05-20 05:30:44

+0

是的,我在phpmyadmin下使用sql數據庫。 – Farhan 2010-05-20 09:24:47

回答

0

如果要將圖像存儲在數據庫中而不是引用圖像的路徑,則用於保存圖像的列需要爲BLOB類型。

CREATE TABLE upload (
    id INT NOT NULL AUTO_INCREMENT, 
    name VARCHAR(30) NOT NULL, 
    content LONGBLOB NOT NULL, 
    PRIMARY KEY(id) 
); 

從你的黑莓程序(警告,未經測試):

//First param is a Bitmap, second is quality 
JPEGEncodedImage encodedImage = JPEGEncodedImage.encode(image, 100); 
byte imageBytes[]=encodedImage.getData(); 

//The HTTP connection stuff 
HttpConnection conn = (HttpConnection) Connector.open(SERVER_URL, Connector.READ_WRITE); 
conn.setRequestProperty(HttpProtocolConstants.HEADER_CONTENT_TYPE, HttpProtocolConstants.CONTENT_TYPE_MULTIPART_FORM_DATA); 
conn.setRequestMethod(HttpConnection.POST); 
conn.setRequestProperty(HttpProtocolConstants.HEADER_CONTENT_LENGTH, String.valueOf(imageBytes.length)); 
//Change this part to what your server side code expects 
String contDisp="Content-Disposition:form-data; uploadedimage=YOUR_IMAGE_NAME;filename=\"Image.jpg\""; 
String contEnc = "Content-Transfer-Encoding: binary"; 
String type="Content-Type:image/jpeg"; 

OutputStream out= conn.openOutputStream(); 
out.write(imageBytes); 
out.flush(); 
out.close(); 

所以基本上你使用HttpConnection設置的標頭,POST請求,以多形式的數據作爲內容類型。還有其他可能需要的標題,以確切地知道您需要什麼(而不是BlackBerry特定的),請檢查HTTP/1.1 protocol specification

如何將圖像實際存儲到數據庫中取決於您的服務器端實現。這可以是PHP,ASP,JSP或任何允許您與MySQL實例通信的服務器端技術。

+0

先生請給我這個解決方案,我怎麼可以從PHP下載圖像,因爲我在php中使用標籤來顯示圖像,但是在JDE中無法訪問它以從中獲取圖像。當我使用readfile函數時,圖像被讀取,但其他聯繫人信息在JDE中不被訪問。我在PHPMyAdmin下使用MySql。 – Farhan 2010-05-31 15:13:16

0

您可以在base64對它們進行編碼後將圖像存儲在blob字段中。