尝试将图像作为 Base64 上传到服务器并收到响应:
BasicNetwork.logSlowRequests:r request = [lifetime = 6927],[size = 497], [RC = 413],[retryCount = 0] BasicNetwork.performRequest:意外 SERVER-URL
的响应代码413
答案 0 :(得分:0)
HTTP响应代码:413有效载荷过大
请求实体大于服务器定义的限制;服务器可能会关闭 连接或返回Retry-After标头字段。
因此,解决此问题的方法是先将图像压缩到可靠的大小,假设它可以为1 MB,然后再上传到服务器。
这是我创建的用于将图像的压缩版本作为File
对象获取的方法:-
private File getCompressedFile(Context activity, String filePath) {
final long FILE_MAX_SIZE = 1024L * 1024L;
File file = new File(filePath);
if (file.isFile() && file.length() < FILE_MAX_SIZE)
return file;
else {
BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig = Bitmap.Config.ARGB_8888;
Bitmap bitmap = BitmapFactory.decodeFile(filePath, options);
bitmap = Bitmap.createScaledBitmap(bitmap, bitmap.getWidth() / 2, bitmap.getHeight() / 2, false);
File output = new File(activity.getCacheDir(), "tempUploadFile.jpg");
try {
if (!output.isFile())
//noinspection ResultOfMethodCallIgnored
output.createNewFile();
OutputStream fOutput = new FileOutputStream(output);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fOutput);
fOutput.flush();
fOutput.close();
} catch (Exception e) {
e.printStackTrace();
}
return output.length() < FILE_MAX_SIZE ? output : getCompressedFile(output.getAbsolutePath());
}
}