【发布时间】:2016-07-02 10:02:36
【问题描述】:
我正在使用此代码从我的 Android 应用 中拍照:
if (requestCode == CAMERA_REQUEST && resultCode == RESULT_OK){
photo = (Bitmap) data.getExtras().get("data");
ByteArrayOutputStream baos = new ByteArrayOutputStream();
photo.compress(Bitmap.CompressFormat.JPEG, 40, baos);
byte[] photoByte = baos.toByteArray();
encodedImage = Base64.encodeToString(photoByte,Base64.DEFAULT);
}
我正在通过 POST 将此字符串 encodedImage 发送到我的 PHP 服务器,并将其接收到 $encodedImage。我有一个数据库,其中有一个myImage 类型为MEDIUMBLOB 的字段。我试图将encodedimage 保存在myImage 中,但它被保存为损坏的图像。我试图另存为base64_decode($encodedImage),但不知何故这也不起作用。
我想做三件事:
将图像保存到服务器端数据库 (BLOB)
在网页上显示图片
将其发送回 Android 应用。
我在理解上述任务所需的不同格式的图像转换方面遇到问题。
对于我当前的项目,我不想将图像保存到文件夹并提供指向数据库的链接,因此该选项对我来说是关闭的。
我保存图像的 PHP 代码:
$baseImage = $_POST['baseImage'];
$blobImage = base64_decode($baseImage);
$query = "INSERT INTO `complaints`(`myImage`,...) VALUES ('$blobImage',...)"
$result = mysqli_query($conn,$query);
【问题讨论】:
-
您是否尝试过
mysqli_real_escape_string()或为它准备的语句,使用mysqli_ 或PDO?应该可以的。 -
php + mysql 对我来说是新的,所以我必须先用谷歌搜索。我一定会去找的。span>
-
您是否在将编码图像存储到数据库之前对其进行了测试?
-
因为您确实标记为 mysql,所以您认为您将使用
mysqli_作为您的 API。如果您使用mysql_进行连接,请使用mysql_real_escape_string()。这对我们来说是未知的。当保存为 BLOB 时,您绝对必须转义进入 mysql 的数据。 -
@HalayemAnis 不,我没有。我本来想但没想到,因为我是通过电话发送的。