Java:实现向 AWS 的 S3 上传文件

本文介绍了如何使用Java连接并上传文件到AWS S3。通过在Maven项目的pom.xml中添加特定依赖来引入S3包,然后利用IAM账号的access_key和secret_key进行身份验证,实现文件上传。
摘要由CSDN通过智能技术生成

Python 实现方式:https://blog.csdn.net/qq_33811662/article/details/80710268

使用 java 包去连接 s3 并且向 s3 上传文件,需要有 s3 的包,此处我用的是 maven 项目去导入 s3 的包,在 pom.xml 中加入如下内容

    <dependency>
        <groupId>com.amazonaws</groupId>
        <artifactId>aws-java-sdk-s3</artifactId>
        <version>1.11.347</version>
    </dependency>

此时 maven 会自动导入相关的依赖包:
这里写图片描述
然后需要有一个 aws 的 s3 权限的一个 IAM 帐号,需要得到 access_key 和 secret_key

最后是代码部分:

import java.io.File;
import java.io.IOException;
import java.net.URL;
import com.amazonaws.AmazonClientException;
import com.amazonaws.AmazonServiceException;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.regions.Reg
AWS::S3::S3Client是AWS提供的用于与S3服务进行交互的客户端库。它具有上传文件S3存储桶的功能。 在使用AWS::S3::S3Client上传文件时,可以通过使用S3的`TransferManager`类来获取上传进度。`TransferManager`类提供了一个`Upload`方法,该方法接受一个`PutObjectRequest`对象作为参数,该对象包含了要上传的文件信息。 要获取上传进度,可以在`PutObjectRequest`对象设置一个`ProgressListener`。`ProgressListener`是一个接口,它定义了一些回调方法,当上传进度发生变化时,这些方法会被触发。 通过实现`ProgressListener`接口,并将其实例作为参数传递给`PutObjectRequest`对象的`setGeneralProgressListener`方法,就可以获取上传进度。在`ProgressListener`的回调方法,可以获取当前上传的字节数、总字节数以及上传百分比等信息。 例如,可以创建一个实现`ProgressListener`接口的类`MyProgressListener`,并将其传递给`PutObjectRequest`对象的`setGeneralProgressListener`方法: ```java public class MyProgressListener implements ProgressListener { @Override public void progressChanged(ProgressEvent progressEvent) { long bytesTransferred = progressEvent.getBytesTransfered(); long totalBytes = progressEvent.getBytes(); int percent = (int) (bytesTransferred * 100 / totalBytes); System.out.println("上传进度:" + percent + "%"); } } ``` 然后,在上传文件之前,创建`MyProgressListener`的实例,并将其设置为`PutObjectRequest`对象的`ProgressListener`: ```java MyProgressListener progressListener = new MyProgressListener(); PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, key, new File(filePath)); putObjectRequest.setGeneralProgressListener(progressListener); TransferManager transferManager = new TransferManager(client); Upload upload = transferManager.upload(putObjectRequest); upload.waitForCompletion(); ``` 这样,当文件上传时,`MyProgressListener`的`progressChanged`方法会根据上传进度的变化被触发,并打印出上传的百分比。
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值