从 android 应用程序上传图像到服务器不工作
Upload image to server from android app not working
我正在尝试编写代码,使用 php 将图像从 android 应用程序上传到服务器。我试图通过将其转换为 Base64 并将其作为 String
发送来实现
这是 java 代码:
public class uploadImage extends AsyncTask< String, String, String>{
Bitmap _image;
uploadImage(Bitmap image){
_image = image;
}
@Override
protected String doInBackground(String... params) {
HttpURLConnection con = null;
BufferedOutputStream os= null;
try {
URL url = new URL("URL_TO_SERVER");
con = (HttpURLConnection) url.openConnection();
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
_image.compress(Bitmap.CompressFormat.JPEG, 100, byteArrayOutputStream);
byte[] byte_arr = byteArrayOutputStream.toByteArray();
String _imageEncoded = Base64.encodeToString(byte_arr, Base64.DEFAULT);
JSONObject jsonObject = new JSONObject();
jsonObject.put("imageEncoded", _imageEncoded);
String message = jsonObject.toString();
con.setDoOutput(true);
con.setRequestProperty("Content-Type", "application/json;charset=utf-8");
con.setRequestProperty("X-Requested-With", "XMLHttpRequest");
con.connect();
os = new BufferedOutputStream(con.getOutputStream());
os.write(message.getBytes());
os.flush();
return "";
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
finally {
if (con != null)
con.disconnect();
if (os != null)
try {
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
}
}//uploadImage
这是 php 代码:
<?php
$json = file_get_contents('php://input');
$obj = json_decode($json);
$imageEncoded = $obj->{"imageEncoded"}
$image = base64_decode("$imageEncoded");
$alterName = rand();
$target= $_SERVER['DOCUMENT_ROOT']."/imagenes/";
$new_img_path =$target.$alterName.".jpg";
file_put_contents( $new_img_path, $image );?>
由于某种原因,它根本不起作用,有人可以告诉我我的错误是什么吗?或者指导我更好的方法。
使用以下 class "Base64":
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
yourBitmap.compress(Bitmap.CompressFormat.JPEG, 90, outStream);
byte[] bArray = outStream.toByteArray();
String imgEncoding = Base64.encodeBytes(bArray);
这是 class 的 link:
https://sourceforge.net/projects/iharder/files/base64/2.3/Base64-v2.3.7.zip/download
我正在尝试编写代码,使用 php 将图像从 android 应用程序上传到服务器。我试图通过将其转换为 Base64 并将其作为 String
发送来实现这是 java 代码:
public class uploadImage extends AsyncTask< String, String, String>{
Bitmap _image;
uploadImage(Bitmap image){
_image = image;
}
@Override
protected String doInBackground(String... params) {
HttpURLConnection con = null;
BufferedOutputStream os= null;
try {
URL url = new URL("URL_TO_SERVER");
con = (HttpURLConnection) url.openConnection();
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
_image.compress(Bitmap.CompressFormat.JPEG, 100, byteArrayOutputStream);
byte[] byte_arr = byteArrayOutputStream.toByteArray();
String _imageEncoded = Base64.encodeToString(byte_arr, Base64.DEFAULT);
JSONObject jsonObject = new JSONObject();
jsonObject.put("imageEncoded", _imageEncoded);
String message = jsonObject.toString();
con.setDoOutput(true);
con.setRequestProperty("Content-Type", "application/json;charset=utf-8");
con.setRequestProperty("X-Requested-With", "XMLHttpRequest");
con.connect();
os = new BufferedOutputStream(con.getOutputStream());
os.write(message.getBytes());
os.flush();
return "";
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
finally {
if (con != null)
con.disconnect();
if (os != null)
try {
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
}
}//uploadImage
这是 php 代码:
<?php
$json = file_get_contents('php://input');
$obj = json_decode($json);
$imageEncoded = $obj->{"imageEncoded"}
$image = base64_decode("$imageEncoded");
$alterName = rand();
$target= $_SERVER['DOCUMENT_ROOT']."/imagenes/";
$new_img_path =$target.$alterName.".jpg";
file_put_contents( $new_img_path, $image );?>
由于某种原因,它根本不起作用,有人可以告诉我我的错误是什么吗?或者指导我更好的方法。
使用以下 class "Base64":
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
yourBitmap.compress(Bitmap.CompressFormat.JPEG, 90, outStream);
byte[] bArray = outStream.toByteArray();
String imgEncoding = Base64.encodeBytes(bArray);
这是 class 的 link:
https://sourceforge.net/projects/iharder/files/base64/2.3/Base64-v2.3.7.zip/download