安卓 无法将图像保存到 mysql 数据库


Android Cannot save image to mysql database

我不知道是否有人可以阅读所有这些并付出时间,但无论如何我正在尝试使用 android 应用程序将图像保存到 mysql 数据库中,但它失败了,没有添加任何内容,所以我尝试显示一些我用来保存图像的变量,以查看是否有任何问题,因此使用 Log.d 方法我显示两个变量,请查看它们的内容并帮助我找出问题所在:

主活动

 public String getStringImage(Bitmap bmp) {
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    bmp.compress(Bitmap.CompressFormat.JPEG, 100, baos);
    byte[] imageBytes = baos.toByteArray();
    String encodedImage = Base64.encodeToString(imageBytes, Base64.DEFAULT);
    return encodedImage;
}
@Override
        protected String doInBackground(Bitmap... params) {
            Bitmap bitmap = params[0];
            String uploadImage = getStringImage(bitmap);
            Log.i("UploadImage ----- ",uploadImage);
            HashMap<String, String> data = new HashMap<>();
            data.put(UPLOAD_KEY, uploadImage);
            String result = rh.sendPostRequest(UPLOAD_URL, data);
            Log.i("Result *****: ", result);
            return result;
        }

字符串上传图片

9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBA

字符串结果:此变量显示一个可应拉丝 html br :

<br />

请求处理程序 :

public String sendPostRequest(String requestURL,HashMap<String, String> postDataParams) {
    URL url;
    String response = "";
    try {
        url = new URL(requestURL);
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setReadTimeout(15000);
        conn.setConnectTimeout(15000);
        conn.setRequestMethod("POST");
        conn.setDoInput(true);
        conn.setDoOutput(true);
        OutputStream os = conn.getOutputStream();
        BufferedWriter writer = new BufferedWriter(
                new OutputStreamWriter(os, "UTF-8"));
        writer.write(getPostDataString(postDataParams));
        writer.flush();
        writer.close();
        os.close();
        int responseCode = conn.getResponseCode();
        if (responseCode == HttpsURLConnection.HTTP_OK) {
            BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            response = br.readLine();
        } else {
            response = "Error Registering";
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    return response;
}
private String getPostDataString(HashMap<String, String> params) throws UnsupportedEncodingException {
    StringBuilder result = new StringBuilder();
    boolean first = true;
    for (Map.Entry<String, String> entry : params.entrySet()) {
        if (first)
            first = false;
        else
            result.append("&");
        result.append(URLEncoder.encode(entry.getKey(), "UTF-8"));
        result.append("=");
        result.append(URLEncoder.encode(entry.getValue(), "UTF-8"));
    }
    return result.toString();
}

问题是一个发送帖子请求方法,但我找不到它有人可以找到那里的问题是什么?

这是我使用的脚本 PHP:

<?php
if($_SERVER['REQUEST_METHOD']=='POST'){
		
		$image = $_POST['image'];
		
		require_once('dbConnect.php');
		
		$sql = "INSERT INTO images (image) VALUES (?)";
		$stmt = mysqli_prepare($con,$sql);
		
		mysqli_stmt_bind_param($stmt,"s",$image);
		mysqli_stmt_execute($stmt);
		
		$check = mysqli_stmt_affected_rows($stmt);
		
		if($check == 1){
			echo "Image Uploaded Successfully";
		}else{
			echo "Error Uploading Image";
		}
		mysqli_close($con);
	}else{
		echo "Error";
	}
	?>

1-比较图像的数据大小和BLOB类型的数据大小

  $image = $_POST['image'];
  $image = base64_decode($image );

由于您在将图像发送到数据库之前对其进行了编码,因此您需要在存储之前对其进行解码。