0

目前,我在通过 put 请求向预签名的 AWS url 发送 mp4 视频文件时遇到问题。我们已经生成了它,但是当我发送视频时,它只是一个无法播放的 32kb 文件。

我目前的代码如下:

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 响应代码,但我认为我的视频文件被弄乱了?我究竟做错了什么?

4

1 回答 1

0

此流代码不正确:

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);
}
于 2020-03-27T19:58:53.220 回答