【问题标题】:take a camera picture and send to php server in android using multipart entity使用多部分实体拍摄相机照片并发送到 android 中的 php 服务器
【发布时间】:2013-10-24 12:52:35
【问题描述】:

我已经从相机拍摄照片并从 sdcard 获取图像。在这里,我必须将这张照片上传到 php 服务器。我能怎么做 ???请给我一个解决方案。

编辑:

获取图像路径的字符串值为:/mnt/sdcard/DCIM/Camera/1382769609416.jpg

我必须将这些图像的 url 插入我的 php 服务器。

在我的数据库中,值被插入到如下字段中:

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

但是图片没有上传到我的php服务器。我已经检查了“images/trucks/”这个路径。

这是我的服务器端 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 上传到该文件夹​​?请验证我的代码并给我一个解决方案???但路径已正确存储在该数据库中。

这是我的安卓端代码:

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 in /opt/lampp/htdocs/ImageAndroid/imageupload.php25
通知:未定义索引:TRUCK_PHOTO in /opt/lampp/htdocs/ImageAndroid/imageupload.php26

第 25 行和第 26 行是:

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

【问题讨论】:

  • 看来你得用谷歌了。
  • @Selvin 我搜索了谷歌并完成了上面的代码。但我没有得到捕获的照片 url 的路径。请再次访问我的帖子并给我一个解决方案yaar
  • 您需要从base64解码回php端的字节数组或使用multipart
  • 是的,您需要使用 decode fr2.php.net/fr/base64_decode 但仍然适用于小尺寸图片我建议您使用多部分 http 请求
  • 请发布您用于将图像推送到服务器的 Java 代码。

标签: php android file-upload image-uploading android-camera-intent


【解决方案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;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-20
    • 1970-01-01
    • 2013-10-31
    相关资源
    最近更新 更多