php – 将base64encoded映像保存为服务器端数据库BLOB
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – 将base64encoded映像保存为服务器端数据库BLOB,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1851字,纯文字阅读大概需要3分钟。
内容图文
我正在使用以下代码从我的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将此String encodedImage发送到我的PHP服务器并将其接收到$encodedImage.我有一个数据库,我有一个类型为MEDIUMBLOB的字段myImage.我试图在myImage中保存encodedimage但它被保存为损坏的图像.我试图保存为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的字节数基于64,但我会在mysql中对它们进行base64编码.
内容总结
以上是互联网集市为您收集整理的php – 将base64encoded映像保存为服务器端数据库BLOB全部内容,希望文章能够帮你解决php – 将base64encoded映像保存为服务器端数据库BLOB所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。