【问题标题】:Sending images from android to remote MySQL database将图像从 android 发送到远程 MySQL 数据库
【发布时间】:2012-08-29 16:45:29
【问题描述】:

您好,我正在做一个课程作业,我需要将数据发送到带有 PHP 后端的远程 MySQL 服务器。目前我在发送和接收图像时遇到了一些问题。

我目前正在做的是将图像编码为 base64 并通过 http post 将其发送到我的服务器。我已经检查了正在发送的数据,一切都很好。但是,我的 PHP 方面没有正确处理它。

这就是我正在做的......

这是我用来将位图转换为字符串的方法...

  ByteArrayOutputStream baos=new  ByteArrayOutputStream();
  image.compress(Bitmap.CompressFormat.JPEG, 90, baos);
    byte [] b=baos.toByteArray();
    String imageString=Base64.encodeToString(b, Base64.DEFAULT);

然后我在 http post 中发送这个 imageString,它被下面的 PHP 脚本接收

$uploadDIR = '../data/';
if ($_REQUEST['picture']!=null){

    $image = base64_decode($_REQUEST['picture']);
    $file = $uploadDIR . uniqid().'.jpeg';
file_put_contents($file, $image);
    $sql = "
                                            INSERT INTO comments
                                            (image)
                                            VALUES (
                                                    '".$file."'
                                                    )";


}
executeSQLQuery($sql);

在尝试了几次之后,甚至文件都没有存储在那个位置。

提前感谢您的帮助:)

【问题讨论】:

  • 您无法根据收到的数据重新创建图像吗?或者你能更多地了解这个问题吗?
  • 不,我想我无法从该数据重新创建图像,因为它没有在指定目录中创建图像文件。我的代码看起来没问题吗?
  • 好的,所以我创建了一个日志文件 PHP 方面的东西,它似乎没有接收到编码图像。它只是得到 NULL,但是当我在 java 方面检查时,它肯定是被发送的......

标签: java php android mysql base64


【解决方案1】:

java中的代码假设图像已经转换为位图:

ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmIcone.compress(Bitmap.CompressFormat.PNG, 90, stream);
byte[] byte_arr = stream.toByteArray();
String image_str = Base64.encodeBytes(byte_arr);
namevaluepair.add(new BasicNameValuePair("image", image_str));

在服务器中:

$base= $_REQUEST['image'];
$buffer = base64_decode($base);

$buffer = mysql_real_escape_string($buffer);

【讨论】:

    猜你喜欢
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-23
    相关资源
    最近更新 更多