PUT mp4 файл, используя AWS предопределенный URL - PullRequest
0 голосов
/ 27 марта 2020

В настоящее время у меня возникают проблемы с отправкой видеофайла в формате mp4 поверх запроса пут на заранее назначенный AWS URL. Он у нас сгенерирован, но когда я отправляю видео, это просто файл размером 32 КБ, который не воспроизводится.

Мой текущий код выглядит следующим образом:

HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoOutput(true);
connection.setRequestMethod("PUT");
connection.setRequestProperty("Connection", "Keep-Alive");
connection.setRequestProperty("Cache-Control", "no-cache");
connection.setRequestProperty("Content-Type", "video/mp4");
DataOutputStream request = new DataOutputStream(connection.getOutputStream());

byte[] buffer = new byte[BUFFER_SIZE];
InputStream inputStream = new BufferedInputStream(new FileInputStream(file));

while (inputStream.read(buffer) != -1) {
    request.write(buffer);
}

Я получаю ОК - 200 Ответ Код, но я думаю, что мой видео файл как-то испортился? Что я делаю не так?

1 Ответ

0 голосов
/ 27 марта 2020

Этот код потоковой передачи неверен:

byte[] buffer = new byte[BUFFER_SIZE];
InputStream inputStream = ...;
while (inputStream.read(buffer) != -1) {
    request.write(buffer);
}

Это должно быть примерно так:

int length;
byte[] buffer = new byte[BUFFER_SIZE];
InputStream inputStream = ...;
while ((length = inputStream.read(buffer)) != -1) {
    request.write(buffer, 0, length);
}
...