使用多部分实体拍摄相机照片并发送到android中的php服务器
我已经从相机上拍摄了这张照片,也从SD卡上获取了图像。在这里我必须上传这张照片到php服务器。我该怎么办???请给我一个解决办法 编辑: 当我获取图像路径的字符串值时,它是:/mnt/sdcard/DCIM/Camera/1382769609416.jpg 我必须将这些图像的url插入我的php服务器 在我的数据库中,该值插入到字段中,如下所示:使用多部分实体拍摄相机照片并发送到android中的php服务器,php,android,file-upload,image-uploading,android-camera-intent,Php,Android,File Upload,Image Uploading,Android Camera Intent,我已经从相机上拍摄了这张照片,也从SD卡上获取了图像。在这里我必须上传这张照片到php服务器。我该怎么办???请给我一个解决办法 编辑: 当我获取图像路径的字符串值时,它是:/mnt/sdcard/DCIM/Camera/1382769609416.jpg 我必须将这些图像的url插入我的php服务器 在我的数据库中,该值插入到字段中,如下所示: images/trucks/mnt/sdcard/DCIM/Camera/1382769609416.jpg 但是图像并没有上传到我的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上传到该文件夹??请验证我的代码并给我一个解决方案???但是路径正确地存储在该数据库中
这是我的android端代码:
在详细信息规范中.java:
static String CapturedImageDetails;
String Path = cursor.getString(file_ColumnIndex);
CapturedImageDetails = Path;
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);
}
在AvailableLocation.java中:
static String CapturedImageDetails;
String Path = cursor.getString(file_ColumnIndex);
CapturedImageDetails = Path;
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);
}
使用以下代码将位图图像转换为字符串:
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;
}
似乎你必须使用谷歌。@塞尔文我搜索了谷歌,并完成了上面的代码。但是我没有得到截获照片的url路径。请再次访问我的帖子,并给我一个解决方案Yaary您需要在php端从base64解码回字节数组或使用multipartyes您需要使用decode,但仍然适用于小尺寸图片我建议您使用multipart http Request请发布您用于将图像推送到服务器的Java代码。