如何将base64 Android保存到MySQL数据库?

如何将base64 Android保存到MySQL数据库?,android,mysql,laravel,base64,Android,Mysql,Laravel,Base64,我发送一个图像到拉威尔API使用改装 D/NetworkManagementSocketTagger: tagSocket(74) with statsTag=0xffffffff, statsUid=-1 I/mple1.messegin: Background concurrent copying GC freed 21904(27MB) AllocSpace objects, 14(3MB) LOS objects, 50% free, 18MB/37MB, paused 402us

我发送一个图像到拉威尔API使用改装

D/NetworkManagementSocketTagger: tagSocket(74) with statsTag=0xffffffff, statsUid=-1

I/mple1.messegin: Background concurrent copying GC freed 21904(27MB) AllocSpace objects, 14(3MB) LOS 
objects, 50% free, 18MB/37MB, paused 402us total 102.147ms

E/FF1: 500 Response{protocol=http/1.1, code=500, message=Internal Server Error, 
url=http://192.168.1.8/company_messenger/public/apistore}
我看到第一行,过了一会儿,另外两行出现了

我有这些错误我不知道到底是什么问题

  • 我将图像转换为base64

    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos); // bm is the bitmap object
    byte[] b = baos.toByteArray();
    String encodedImage = Base64.encodeToString(b, Base64.DEFAULT);
    
  • 在laravel中,我在文本栏中收到它


  • PS:当我只发送一个小字符串而不是解码的图像时,它被正确地存储了

    您有哪种类型的列

    存储此类数据必须是二进制的

    请参阅关于将图像以encodec64或二进制形式保存在数据库中的讨论

    除了存储大量数据外,还大大增加了负载,通常只需将图像保存在驱动器上,即可保存路径

    在BlOB和TEXT字段中可以保存的最大数据量

    TINYBLOB, TINYTEXT       Up to 255 bytes
    BLOB, TEXT               Up to 64 Kb    
    MEDIUMBLOB, MEDIUMTEXT   Up to 16 Mb
    LONGBLOB, LONGTEXT       Up to 4 Gb
    

    正如您所看到的,文本只能容纳64KB的数据,并且您的图像可能比以54为基数编码的图像大,从而进一步增大了大小,您有哪种类型的列

    存储此类数据必须是二进制的

    请参阅关于将图像以encodec64或二进制形式保存在数据库中的讨论

    除了存储大量数据外,还大大增加了负载,通常只需将图像保存在驱动器上,即可保存路径

    在BlOB和TEXT字段中可以保存的最大数据量

    TINYBLOB, TINYTEXT       Up to 255 bytes
    BLOB, TEXT               Up to 64 Kb    
    MEDIUMBLOB, MEDIUMTEXT   Up to 16 Mb
    LONGBLOB, LONGTEXT       Up to 4 Gb
    

    正如您所看到的,文本只能容纳64 KB的数据,并且您的图像可能比以54为基数对其进行编码的图像大,从而进一步增大了大小。如果您存储的是base64,则文本不会有任何影响,但我会将这样一列设置为二进制


    但是一个TEXT或BLOB(对应的二进制类型)列最多可以有65535个字节(在base64编码之前是43690个字节)。对于最多16 MB的数据,请使用MEDIUMTEXT或MEDIUMBLOB类型。对于高达4GB的数据,请使用LONGTEXT或LONGBLOB类型。

    如果您存储的是base64,文本不会有任何影响,但我会将这样的列设置为二进制


    但是一个TEXT或BLOB(对应的二进制类型)列最多可以有65535个字节(在base64编码之前是43690个字节)。对于最多16 MB的数据,请使用MEDIUMTEXT或MEDIUMBLOB类型。对于最多4 GB的数据,请使用LONGTEXT或LONGBLOB类型。

    检查服务器的错误日志以查看实际的错误消息?显示客户端的错误只是告诉我们服务器有错误,而不是它是什么检查服务器的错误日志以查看实际的错误消息?显示客户端的错误只是告诉我们服务器有一个错误,而不是Base64是TeX.Base64是文本。如果这个答案对您有帮助,请考虑一下Upf这个答案对您的帮助,请考虑一下它的投票。