如何使用Java上传长BLOB(图像),MySQL数据库和PHP中找回?(How to upload

2019-09-28 14:29发布

我工作的一个项目,我需要将图像上传到数据库,并从数据库中检索相同。

我需要的图像将使用Java的Android设备上传。 以下是我已经实现

Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), uri);
            // Log.d(TAG, String.valueOf(bitmap));
            ByteArrayOutputStream stream = new ByteArrayOutputStream();
            bitmap.compress(Bitmap.CompressFormat.PNG, 90, stream); //compress to which format you want.
            byte[] byte_arr = stream.toByteArray();
            image_str = Base64.encodeToString(byte_arr, Base64.DEFAULT);

我将字节数组到数据库中。 这里是我的PHP代码检索相同:

 /**
*Get profile_pic*/
public function callmethod($userId){
    $stmt = $this->conn->prepare("SELECT profile_pic FROM users WHERE unique_id=?");
    $stmt->bind_param('s',$userId); 
    //$result = mysql_query($query) or die(mysql_error()); 
    //$photo = mysql_fetch_array($result); 
    $stmt->execute();
    $stmt->store_result();
    $stmt->bind_result($profile_pic);
    $stmt->fetch();
     //$obj->picture = base64_encode($profile_pic);
    //echo $obj;

    header("Content-Type: image/jpeg");
echo '<img src="data:image/jpeg;base64,<?php echo base64_encode($profile_pic); ?>" />';
}

我现在面临这里的问题是,文件越来越上传到数据库,但是当我从数据库中检索图像变量$profile_pic是空的,因此没有被显示的图像。

我需要它能够检索的Android使用Java的图像。 我能做到这一点的只是编码值与检索json格式?

普莱斯让我知道我做错了。 TIA

Answer 1:

 /**
*Get profile_pic*/
public function callmethod($userId){
$stmt = $this->conn->prepare("SELECT profile_pic FROM users WHERE unique_id=?");
$stmt->bind_param('s',$userId); 
//$result = mysql_query($query) or die(mysql_error()); 
//$photo = mysql_fetch_array($result); 
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($profile_pic);
while ($stmt->fetch()) {
    echo "<img src='data:image/jpeg;base64,".$profile_pic."' />";
}
 //$obj->picture = base64_encode($profile_pic);
//echo $obj;


}

OK试试这个代码this.you不需要header("Content-Type: image/jpeg"); 功能。 这是在PHP代码中的错误。 这个代码将创建basc64 img标签。

现在Android的一部分。

在PHP改变这一点。

while ($stmt->fetch()) {
    echo "<img src='data:image/jpeg;base64,".$profile_pic."' />";
}

while ($stmt->fetch()) {
    echo $profile_pic;
}

这将是你的Android部分。

byte[] decodedString = Base64.decode(strBase64, Base64.DEFAULT);
Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length); 
image.setImageBitmap(decodedByte);


文章来源: How to upload long blob (image) to mysql database using java and retrieve in php?