2012-08-29 31 views
0

嗨有一個課程作品,我需要發送數據到一個PHP後端的遠程MySQL服務器的作品。目前,我在發送和接收圖像時遇到了一些問題。從android發送圖像到遠程MySQL數據庫

我目前正在做的是將圖像編碼爲base64並通過http post發送給我的服務器。我已經檢查了正在發送的數據,並且一切正常。然而它沒有被我的PHP方面正確處理。

下面是我在做什麼...

這是我使用位圖到字符串轉換的方法...

ByteArrayOutputStream baos=new ByteArrayOutputStream(); 
    image.compress(Bitmap.CompressFormat.JPEG, 90, baos); 
    byte [] b=baos.toByteArray(); 
    String imageString=Base64.encodeToString(b, Base64.DEFAULT); 

我然後在HTTP POST發送此和imagestring和它是由下面的PHP腳本收到的

$uploadDIR = '../data/'; 
if ($_REQUEST['picture']!=null){ 

    $image = base64_decode($_REQUEST['picture']); 
    $file = $uploadDIR . uniqid().'.jpeg'; 
file_put_contents($file, $image); 
    $sql = " 
              INSERT INTO comments 
              (image) 
              VALUES (
                '".$file."' 
                )"; 


} 
executeSQLQuery($sql); 

試過這幾次後,甚至沒有文件存儲在該位置。

預先感謝任何幫助:)

+0

你不能從您收到的數據重新創建圖像?或者你可以更多地瞭解這個問題。 –

+0

不,我想我不能從該數據重新創建一個圖像,因爲它沒有在指定的目錄中創建一個圖像文件。我的代碼看起來好嗎? – user1044585

+0

好的,所以我已經創建了一個日誌文件PHP的一面,似乎它不是接收編碼的圖像。它只是獲得NULL,但它肯定會被髮送,因爲我在事物的java方面檢查... – user1044585

回答

0

代碼在java中假定圖像已被轉換爲位圖:

ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
bmIcone.compress(Bitmap.CompressFormat.PNG, 90, stream); 
byte[] byte_arr = stream.toByteArray(); 
String image_str = Base64.encodeBytes(byte_arr); 
namevaluepair.add(new BasicNameValuePair("image", image_str)); 

在服務器:

$base= $_REQUEST['image']; 
$buffer = base64_decode($base); 

$buffer = mysql_real_escape_string($buffer); 
相關問題