Android - загрузить большое изображение в виде байтового массива на подписанный URL-адрес Google - PullRequest
0 голосов
/ 08 января 2020

Можно ли загрузить (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 (реагировать на родную), отправив двоичный массив в теле

...