将base64编码的图像另存为BLOB到服务器端数据库

Srujan Barai

我正在使用以下代码从我的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);
    }

我正在encodedImage通过POST将此字符串发送到我的PHP服务器,并将其接收到$encodedImage我有一个数据库,其中有一个myImagetype字段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);
楚加迪

使用关键字_binary前缀SQL。

$query = "INSERT INTO `complaints`
(`myImage`,...)
VALUES (_binary'".addcslashes($blobImage, "\x00\'\"\r\n")."',...)"

另外,使用CURL设置测试环境,以便您可以反复向其抛出base64编码的图像。这将是您需要大量调试的情况。

<?php
$f = fopen('sample.jpg.base64.txt', 'w');
$i = fopen('sample.jpg', 'r');
if (!$i) { die("cannot open sample.jpg\n"); } 
$bytes = '';
while ( ! feof($i)) { 
    $bytes .= fread($i, 4096);
}
fclose($i);
fputs($f, base64_encode( $bytes ) );
fclose($f);

然后使用curl重复发布它并调试PHP

curl -X PUT "http://localhost/myimport.php" -F "baseImage=@./sample.jpg.base64.txt"

调整您的PHP脚本,只需将数据写到硬盘驱动器上的文件中并在其中检查即可。写出编码和解码的多个版本。

就个人而言,我不会对从Android到PHP的字节进行base64编码,但我会将base64编码在mysql中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在服务器端数据表中显示Base64图像?

如何使Chrome浏览器在新窗口中将Base64编码的图像另存为png?

如何在sails.js或通常在服务器端JavaScript中将图像转换为base64编码的数据URL?

解析Javascript SDK-将客户端`user`另存为服务器端`Parse.User.current()`

Node.js:将 Android-Base64 编码图像另存为文件

从C#服务器端开始,是否还有生成树图并将其另存为图像的方法?

将Base64缓冲区另存为映像到磁盘

将Blob对象另存为服务器上的文件

readPixels到base64(WebGL服务器端缓冲区转换)

将文件另存为数据库Ajax PHP PDO中的Blob

将文件另存为MYSQL数据库中的Blob或文件路径

使用HTML5捕获签名并将其另存为图像到数据库

将画布的内容发送到Java服务器并将其另存为图像

Onclick将画布另存为服务器上的图像

将Matplotlib图形另存为数据库中的图像字段

在服务器端保存画布图像时,从base64数据字符串中产生空白图像

使用HttpUrlConnection Android将base64编码的图像发送到服务器

将Base64编码的图像上传到PHP服务器

将 Base64 编码图像上传到 php 服务器

在Java中将base64字符串转换为服务器端的图像

从客户端向服务器发送图像数据(base64)

如何从base64数据字符串中保存PNG图片服务器端

如何将HTML5画布另存为服务器上的图像?

将base64图像发布到android中的php服务器

在数据库中将文件名另存为“ BLOB”

在尝试将数据从服务器端保存到 MySql 数据库时,抛出 UnhandledPromiseRejectionWarning: TypeError:

球拍将图像变量另存为图像到磁盘

在服务器上将jasper报告另存为pdf

如何将Base64编码的图像发送到Retrofit POST方法内的服务器