【问题标题】:How to send Large Encoded base64 Image String from Android to Mysql如何将大型编码 base64 图像字符串从 Android 发送到 Mysql
【发布时间】:2018-01-18 13:31:38
【问题描述】:

如何将大编码图像 base64 字符串从 android 发送到服务器

朋友们,

 By default String value within 8000 characters is uploading to server.

 But Encoded Image base64 String length is more than 8000 characters.

更多超过 8000 个字符不会从 android 上传到 mysql 数据库。

请给我一个解决方案..!

 @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // Check which request we're responding to
    if (requestCode == RESULT_LOAD_IMAGE) {
        // Make sure the request was successful
       // Log.d("Vicky","I'm out.");

        display(requestCode,resultCode,data);

    }
}

public void display(int requestCode, int resultCode, Intent data) {
    if (resultCode == RESULT_OK && data != null && data.getData() != null) {
        Uri selectedImageUri = data.getData();
        Bitmap selectedImageBitmap = null;
        try {
            selectedImageBitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), selectedImageUri);
        } catch (IOException e) {
            e.printStackTrace();
        }
        selectedImage.setImageBitmap(selectedImageBitmap);
        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        selectedImageBitmap.compress(Bitmap.CompressFormat.JPEG, 100, byteArrayOutputStream);
        byte[] byteArrayImage = byteArrayOutputStream.toByteArray();
        encodedImage = Base64.encodeToString(byteArrayImage, Base64.DEFAULT);}}

【问题讨论】:

  • 似乎是服务器端(mysql)而不是客户端的问题
  • 我同意 an_droid_dev
  • 我尝试了数据类型 MediumText、LongText 和 Longblob,但它至少存储 8000 个字符,但我需要将超过 8000 个字符存储到服务器。
  • 您发送的 http-request 类型是什么?获取还是发布?我怀疑这是一个网络服务器问题,而不是 DB,因为提到的数据类型支持大于 8K 的字符。您使用的是什么版本的 Mysql,以及什么网络服务器?
  • Webserver: apache 2.4.17 MYSQL VERSION : 10.1.9mariadb 使用 GET METHOD 通过 android 发送,在 php 中我们使用相同的 GET METHOD 来接收。

标签: android mysql


【解决方案1】:

只需检查您的数据库结构图像字段是否具有如下所示的数据类型 longblob

【讨论】:

  • 我尝试使用 longblob,longText,mediumtext,但它不存储超过 8000 个字符,但它只存储在 8000 个字符内。请给我一些其他的解决方案..!
【解决方案2】:

将您的数据类型更改为 VARCHAR。它的最大长度约为 65000。您可以找到更多信息here

ALTER TABLE tablename MODIFY columnname VARCHAR(65000);

【讨论】:

  • 我尝试了65000,但它显示了一些错误,所以我使用了64000,但它也没有工作。
【解决方案3】:

将图像存储在文件中,并将图像的路径保存在数据库中。

【讨论】:

  • OP 想要将图像发送到远程服务器,而不是将其本地存储在移动设备上
  • 您在服务器端或后端使用哪种语言?
  • PHP(Codeigniter)
  • 我不懂php。您需要做的是,通过编码在您的服务器中创建一个文件夹,将您的响应编码字符串转换为 jpg 文件并将其写入您创建的那个文件夹。
猜你喜欢
  • 2015-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-11
  • 2019-04-11
相关资源
最近更新 更多