我想使用Volley StringRequest将base64编码的图像和一些文本上传到我的Web服务器。
当我直接尝试发送base64字符串时,会得到“意外响应代码503” ,但是当我压缩图像然后对其进行编码时,它可以正常工作。问题是我不知道为什么在发送到服务器之前必须先压缩映像,我应该压缩多少,或者有其他任何方式可以不压缩就发送。
我称之为完美运行的 base64Encode
函数:
public String getStringImage(Bitmap bitmap){
ByteArrayOutputStream baos=new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG,50, baos);
byte [] b=baos.toByteArray();
String temp= Base64.encodeToString(b, Base64.DEFAULT);
return temp;
}
base64Encode
函数不起作用/出现503错误:
public String getStringImage(Bitmap bitmap){
ByteArrayOutputStream baos=new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG,100, baos);
byte [] b=baos.toByteArray();
String temp= Base64.encodeToString(b, Base64.DEFAULT);
return temp;
}
我要你考虑的行是:
bitmap.compress(Bitmap.CompressFormat.JPEG,50, baos);
当我将此压缩参数更改为100时,其抛出错误。
我认为发出POST REQUEST时可能会有大小限制,或者可能是Volley StringRequest
的大小限制,或者根本没有大小限制。
<---更新--->如果问题确实是大小限制,那么如何计算bitmap.compress (Bitmap.CompressFormat.JPEG, 50, baos)
压缩后的JPEG大小,而不实际对其进行压缩?还是我知道使用15作为压缩参数时是否可以将图像充分压缩?
答案 0 :(得分:0)
我也面临着同样的问题。因此,这取决于服务器配置。他们设置了帖子获取数据的限制
例如。
//最大大小
post_max_size 20M
因此,您需要与后端Guy交谈或发送压缩的图像。
答案 1 :(得分:0)
我发现此问题可能是由Apache限制了客户端的HTTP请求行大小(例如)和HTTP请求标头字段大小的设置所导致的。因此,如果请求URL太大,则需要增加默认值。 增加Apache配置文件中的URI长度限制(默认为/etc/httpd/conf/httpd.conf):
LimitRequestLine 16380
LimitRequestFieldSize 16380