Код ответа HTTP: 413 Слишком большая полезная нагрузка
Объект запроса превышает пределы, определенные сервером; сервер может закрыть
подключиться или вернуть поле заголовка Retry-After.
Таким образом, решение этой проблемы состоит в том, чтобы сначала сжать изображение до надежного размера, допустим, оно может быть 1 МБ, а затем загрузить на сервер.
Вот метод, который я создал для извлечения сжатой версии изображения в виде 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());
}
}