如何将文件上传到AWS S3存储桶?

Vyankatesh S Repal

我正在创建一个简单的应用程序,要将文件上传到我的AWS S3存储桶。这是我的代码:

import java.io.File;
import java.io.IOException;

import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.auth.AWSStaticCredentialsProvider;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.ObjectMetadata;
import com.amazonaws.services.s3.model.PutObjectRequest;
import com.fasterxml.jackson.*;

public class UploadFileInBucket {

    public static void main(String[] args) throws IOException {
        String clientRegion = "<myRegion>";
        String bucketName = "<myBucketName>";
        String stringObjKeyName = "testobject";
        String fileObjKeyName = "testfileobject";
        String fileName = "D:\\Attachments\\LICENSE";

        try {

            BasicAWSCredentials awsCreds = new BasicAWSCredentials("<myAccessKey>", "<mySecretKey>");
            AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
                    .withRegion(clientRegion)
                    .withCredentials(new AWSStaticCredentialsProvider(awsCreds))
                    .build();

            // Upload a text string as a new object.
            s3Client.putObject(bucketName, stringObjKeyName, "Uploaded String Object");

            // Upload a file as a new object with ContentType and title specified.
            PutObjectRequest request = new PutObjectRequest(bucketName, fileObjKeyName, new File(fileName));
            ObjectMetadata metadata = new ObjectMetadata();
            metadata.setContentType("plain/text");
            metadata.addUserMetadata("x-amz-meta-title", "someTitle");
            request.setMetadata(metadata);
            s3Client.putObject(request);
        }
        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();
        }
    }
}

我无法上传文件,并收到以下错误消息:

Exception in thread "main" java.lang.NoSuchFieldError: 

    ALLOW_FINAL_FIELDS_AS_MUTATORS
        at com.amazonaws.partitions.PartitionsLoader.<clinit>(PartitionsLoader.java:52)
        at com.amazonaws.regions.RegionMetadataFactory.create(RegionMetadataFactory.java:30)
        at com.amazonaws.regions.RegionUtils.initialize(RegionUtils.java:64)
        at com.amazonaws.regions.RegionUtils.getRegionMetadata(RegionUtils.java:52)
        at com.amazonaws.regions.RegionUtils.getRegion(RegionUtils.java:105)
        at com.amazonaws.client.builder.AwsClientBuilder.getRegionObject(AwsClientBuilder.java:249)
        at com.amazonaws.client.builder.AwsClientBuilder.withRegion(AwsClientBuilder.java:238)
        at UploadFileInBucket.main(UploadFileInBucket.java:28)

我添加了执行此代码所需的AWS Bucket凭证,权限和依赖性。

我应该对代码进行哪些更改才能将文件上传到所需的存储桶?

红鸟

看来您是杰克逊库的版本错误,还是以某种方式链接了它们的多个版本。

AWS for Java SDK发行版包含一个第三方/ lib目录,该目录包含应使用该SDK版本构建的所有(正确版本)库。取决于您使用的SDK的哪些功能,您可能不需要全部,但是这些是您应使用的特定第三方库。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将缩略图文件上传到亚马逊S3存储桶?

如何使用Java Apache HttpClient将文件上传到公共AWS S3存储桶

将文件上传到S3存储桶

如何将图像上传到AWS S3并获取图像文件的S3存储桶URL并一次保存到dynamodb-Android

我的Amazon S3存储桶网址是什么?如何将许多文件上传到s3存储桶?

如何使用AWS .NET C#SDK将文件上传到AWS S3存储桶

如何使用boto3将Github上的文件上传到AWS S3存储桶?

使用Java AWS SDK将文件夹上传到S3存储桶

将多个文件上传到AWS S3存储桶,而不会覆盖现有对象

aws-将字符串作为文件上传到S3存储桶

无法将pdf文件上传到AWS s3存储桶-PHP

Laravel cURL 错误 28,将文件上传到 aws s3 存储桶时

php laravel直接将文件上传到AWS S3存储桶

在使用multer重命名文件之前,如何将其上传到s3存储桶?

如何将控制器中的生成pdf文件上传到S3存储桶

如何将InMemoryUploadedFile上传到我的S3存储桶?

-AWS C#.Net Core-如何将.jpg图像上传到S3存储桶而不将其另存为文件

如何使用AWS CDK中的自定义资源将文件上传到S3存储桶

如何使用Salesforce Apex将更大的文件(大于12 MB)上传到AWS s3存储桶

如何使用axios将文件上传到Amazon S3存储桶?

如何获取将图像上传到s3存储桶的文件名?

如何授予Lambda将文件上传到terraform中的s3存储桶的权限?

如何使用Boto将文件上传到S3存储桶中的目录

如何使用Boto将文件上传到S3存储桶中的目录

如何从React前端通过Spring后端将文件上传到S3存储桶?

文件未上传到s3存储桶

AWS Lambda:如何在S3存储桶中读取CSV文件,然后将其上传到另一个S3存储桶?

通过使用分段上传API将小于5 MB的文件上传到AWS S3存储桶

将 JSON 文件从 node.js 中的 aws-sdk 上传到 aws s3 存储桶