使用 AWS 预签名 PUT mp4 文件 url

PUT mp4 file using AWS presigned url

目前,我在将 mp4 视频文件通过 put 请求发送到预签名 AWS url 时遇到问题。我们已经生成了它,但是当我发送视频时,它只是一个无法播放的 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 响应代码,但我觉得我的视频文件被弄乱了? 我做错了什么?

此流式传输代码不正确:

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);
}