gpt4 book ai didi

php - 从Android应用程序上传图像到服务器不工作

转载 作者:可可西里 更新时间:2023-11-01 17:31:46 24 4
gpt4 key购买 nike

我正在尝试编写代码以使用 php 将图像从 android 应用程序上传到服务器。我试图通过将其转换为 Base64 并将其作为字符串发送

这是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 );?>

由于某种原因它不起作用,有人可以告诉我我的错误是什么吗?或指导我采用更好的方法。

最佳答案

使用下面的类“Base64”:

    ByteArrayOutputStream outStream = new ByteArrayOutputStream();
yourBitmap.compress(Bitmap.CompressFormat.JPEG, 90, outStream);
byte[] bArray = outStream.toByteArray();
String imgEncoding = Base64.encodeBytes(bArray);

这是该类(class)的链接:

https://sourceforge.net/projects/iharder/files/base64/2.3/Base64-v2.3.7.zip/download

关于php - 从Android应用程序上传图像到服务器不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39909196/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com