文件存储到amazon S3

由于云技术的日益成熟,越来越多的公司存储文件时会用到云技术,而亚马逊就提供了一个日益成熟的云环境的服务器群方便存储的文件,我就以简单存贮图片到amazon S3为例,简单调用了一下amazon提供的JAR包(aws-java-sdk-1.1.1.jar)的几个API,本文的另一个着重点在于上传时会对图片的格式(例如18x18),大小(例如512K)和类型(例如JPEG)有要求,符合要求的则上传成功,否则失败!

 

自己提供一个接口service

 

AvatarStorageService的实现类AvatarS3StorageServiceImpl

调用此JAR包的三个API:

              1. void com.amazonaws.services.s3.AmazonS3.deleteObject(String bucketName, String key) ---此API删除文件:buckName, 文件夹名;key,所删除文件的key值                  

              2. PutObjectResult com.amazonaws.services.s3.AmazonS3.putObject(String bucketName, String key, File file)    ----此API上传文件                      

              3.void com.amazonaws.services.s3.AmazonS3.setObjectAcl(String bucketName, String key, CannedAccessControlList acl) -----此API设置访问此文件的权限(private,publicRead,PublicReadWrite, AuthenticatedRead等,详细可看API)

下面的主要是对图片文件上传时对格式,大小和类型的验证:

(注意:代码节选自自己的做的项目,意思了解即可)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好,实现文件流上传到亚马逊S3对象存储可以使用Java SDK提供的TransferManager类来实现。下面是实现的步骤: 1. 引入依赖: ```xml <dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-java-sdk-s3</artifactId> <version>1.11.973</version> </dependency> ``` 2. 创建S3Client对象: ```java AmazonS3 s3Client = AmazonS3ClientBuilder.standard() .withRegion(Regions.US_EAST_1) .withCredentials(new AWSStaticCredentialsProvider(new BasicAWSCredentials(accessKey, secretKey))) .build(); ``` 3. 创建TransferManager对象: ```java TransferManager transferManager = TransferManagerBuilder.standard() .withS3Client(s3Client) .build(); ``` 4. 创建Upload对象并开始上传: ```java File file = new File("your-file-path"); Upload upload = transferManager.upload(bucketName, objectKey, file); try { upload.waitForCompletion(); } catch (InterruptedException e) { e.printStackTrace(); } ``` 其中,bucketName为存储桶名称,objectKey为上传到S3的对象名称,file为要上传的文件。 如果想要实现文件流上传,可以将文件流转换为InputStream对象,然后使用TransferManager的upload方法上传: ```java InputStream inputStream = new FileInputStream(file); ObjectMetadata metadata = new ObjectMetadata(); metadata.setContentLength(file.length()); Upload upload = transferManager.upload(bucketName, objectKey, inputStream, metadata); try { upload.waitForCompletion(); } catch (InterruptedException e) { e.printStackTrace(); } ``` 这样就可以实现文件流上传到亚马逊S3对象存储了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值