-1

我從相機拍攝了照片並從sdcard中獲取圖像。在這裏我必須將這張照片上傳到php服務器。我能怎麼做 ???請給我一個解決方案。拍攝照片併發送到android服務器使用多部分實體

編輯:

正如我得到的圖像路徑的字符串值:/mnt/sdcard/DCIM/Camera/1382769609416.jpg

我必須插入這些圖像的URL到我的PHP服務器。

在我的數據庫中的值被插入在球場上,如:

images/trucks/mnt/sdcard/DCIM/Camera/1382769609416.jpg 

但圖像沒有被上傳到我的PHP server.I「圖像/車/」這條道路上已經檢查。

這是我的服務器端的PHP代碼:

$upload_dir = 'images/trucks/'; 
$name = $_FILES['TRUCK_PHOTO']['name']; 
$tmp_name = $_FILES['TRUCK_PHOTO']['tmp_name']; 
$ext = pathinfo($name, PATHINFO_EXTENSION); 
$file_path=$upload_dir.$_POST['TRUCK_PHOTO'].".".$ext; 
move_uploaded_file($tmp_name, $file_path); 
$query = mysqli_query($connect, "insert into tw_trucks (TRUCK_PHOTO) values ('$file_path') "); 

什麼是錯在這個代碼?請給我一個解決方案?

爲什麼圖像不能從android上傳到該文件夾​​?請驗證我的代碼,並給我一個解決方案?但路徑正確存儲在該數據庫中。

這是我的Android端代碼:

DetailsS​​pecification的.java:

static String CapturedImageDetails; 
String Path = cursor.getString(file_ColumnIndex); 
      CapturedImageDetails = Path; 

AvailableLocation的.java:

class UploadPhotoDetails extends AsyncTask<Void, Void, String> { 
String _response = ""; 
@Override 
protected void onPreExecute() { 
    super.onPreExecute(); 
    showDialog(DIALOG_LOADING); 
} 
@Override 
protected String doInBackground(Void... params) { 
_response = postData(); 
return _response; 
} 
public String postData() { 
    String res=null; 
    HttpClient httpclient = new DefaultHttpClient(); 
    HttpPost httppost = new HttpPost("http://192.168.2.45/ImageAndroid/imageupload.php"); 
    try { 
     nameValuePairs = new ArrayList<NameValuePair>(); 
     nameValuePairs.add(new BasicNameValuePair("TRUCK_PHOTO", DetailsSpecification.CapturedImageDetails)); 
     httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
     HttpResponse response = httpclient.execute(httppost); 
     HttpEntity entity = response.getEntity(); 
     result_status = EntityUtils.toString(entity); 
     res = response.toString(); 
    } catch (ClientProtocolException e) { 
    } catch (IOException e) {} 
    return res; 
} 
@Override 
protected void onPostExecute(String result) { 
    super.onPostExecute(result); 
    dismissDialog(DIALOG_LOADING); 
}     

編輯:

正在錯誤時,點擊提交按鈕的Android形式:

注意:未定義指數:TRUCK_PHOTO在/opt/lampp/htdocs/ImageAndroid/imageupload.php上線

通知:未定義指數:TRUCK_PHOTO在/opt/lampp/htdocs/ImageAndroid/imageupload.php上線

25和26日線是:

$name = $_FILES['TRUCK_PHOTO']['name']; 
    $tmp_name = $_FILES['TRUCK_PHOTO']['tmp_name']; 
+0

好像你必須使用谷歌。 – Selvin

+0

@Selvin我搜索了谷歌並完成了上面的代碼。但我沒有得到捕獲的照片網址的路徑。請再次訪問我的帖子,並給我一個解決方案yaar – user2218667

+1

你需要從base64解碼回php字節數組或使用多部分 – Selvin

回答

1

使用下面的代碼,以位圖圖像轉換爲字符串:

public String BitMapToString(Bitmap bitmap) { 
    ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
    bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos); 
    byte[] b = baos.toByteArray(); 
    String strBitMap = Base64.encodeToString(b, Base64.DEFAULT); 
    return strBitMap; 
} 
相關問題