java - 使用 Java SDK 将 Quicktime 视频上传到 S3
问题描述
我正在尝试将 Quicktime 视频上传到 S3,但它已损坏。我正在使用 Java SDK。我认为这与多部分有关?我需要做些什么来阻止它被破坏。文件正在发送到 S3 ok,但下载和查看时失败。
//upload video to S3
PutObjectRequest request2 = new PutObjectRequest(bucketName, "movie.mov", new File(picturePath + "/" + "movie.mov"));
ObjectMetadata metadata = new ObjectMetadata();
metadata.setContentType("video/quicktime");
request2.setMetadata(metadata);
request2.setCannedAcl(CannedAccessControlList.PublicRead);
s3Client.putObject(request2);
解决方案
根据您的问题,我无法判断您使用的是 AWS Java SDK 的v1还是v2。
我发现了一个类似的问题,用户似乎只能上传.mov
小于 5 MB 的文件。要上传大于 5 MB 的文件,您可以尝试使用 Amazon 的高级分段上传示例,该示例利用TransferManager
了 AWS Java SDK v1 中内置的类。
有了这个,您的代码将如下所示:
try {
TransferManager tm = TransferManagerBuilder.standard()
.withS3Client(s3Client)
.build();
// TransferManager processes all transfers asynchronously,
// so this call returns immediately.
Upload upload = tm.upload(bucketName, "movie.mov",
new File(picturePath + "/" + "movie.mov"));
System.out.println("Object upload started");
// Optionally, wait for the upload to finish before continuing.
upload.waitForCompletion();
System.out.println("Object upload complete");
} catch (AmazonServiceException e) {
// The call was transmitted successfully, but Amazon S3 couldn't process
// it, so it returned an error response.
e.printStackTrace();
} catch (SdkClientException e) {
// Amazon S3 couldn't be contacted for a response, or the client
// couldn't parse the response from Amazon S3.
e.printStackTrace();
}
推荐阅读
- django - 如何向 Django 中的特定用户发送推送通知?
- aws-lambda - AWS Lambda 扩展:抛出 LaunchError
- javascript - Scrapy Splash 代码刺激点击链接
- mongodb - MongoDB:数组大小与 $where - ReferenceError
- android - Android在活动中而不是在操作栏中制作菜单
- c# - 从一个索引页面传递所选项目以制作另一个索引页面的标题
- c++ - 在 C++ 中保护对象的安全方法
- go - 将部署策略从 RollingUpdate 更改为使用 Golang 重新创建
- javascript - 如何根据第一个下拉列表过滤第二个下拉列表
- api - 公司页面名称形式对于创建应用程序至关重要吗?