首页 > 解决方案 > 使用 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);

标签: javaamazon-s3

解决方案


根据您的问题,我无法判断您使用的是 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();
}

推荐阅读