Можно ли загрузить (PUT
) изображение в виде байтового массива на подписанный URL-адрес Google на android с помощью okHttp? Конечная точка ожидает image/jpeg
в подписи. Поэтому я не могу использовать multipart и не могу отправить строку в кодировке base64. Изображения ~ 10MB Я попробовал следующий код, чтобы прикрепить byte[]
к телу. Я получаю ответ 200
, однако изображение имеет размер 0 байт.
File file = new File(filePath);
FileInputStream fis = new FileInputStream(file);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] buf = new byte[1024];
try {
for (int readNum; (readNum = fis.read(buf)) != -1; ) {
bos.write(buf, 0, readNum);
}
} catch (IOException e) {
Log.d(TAG, "IOException" + e.getMessage());
}
byte[] byteArray = bos.toByteArray();
RequestBody body = RequestBody.create(MediaType.parse("image/jpeg"), byteArray);
int userId = (int)userIdDouble;
Request request = new Request.Builder()
.url(signedPostUrl)
.header("Content-Type", "image/jpeg")
.put(body)
.build();
OkHttpClient client = new OkHttpClient();
Response response = client.newCall(request).execute();
Я смог добиться этого в javascript (реагировать на родную), отправив двоичный массив в теле