AWS S3 for java 文件上传

本文详细介绍了一种使用Java在AWS S3上进行文件上传的方法。通过MultipartFile接口读取文件,设置对象元数据,包括内容类型和长度,并利用AWS SDK实现文件的上传和公开读取权限设置。同时,生成了预签名URL以获取上传文件的直接链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

AWS S3 文件上传


public static String uploadFile(MultipartFile multipartFile, String time, String uuId) throws Exception {
        String aws_access_key = PropertiesUtil.getStringVal("aws_access_key");//aws_access_key
        String aws_secret_key = PropertiesUtil.getStringVal("aws_secret_key");//aws_secret_key
        String bucketName = PropertiesUtil.getStringVal("bucketName");//桶
        BasicAWSCredentials basicAWSCredentials = new BasicAWSCredentials(aws_access_key, aws_secret_key);
        AWSStaticCredentialsProvider awss = new AWSStaticCredentialsProvider(basicAWSCredentials);

        AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
                .withRegion(Regions.AP_SOUTHEAST_2)
                .withCredentials(awss)
                .build();

        ObjectMetadata metadata = new ObjectMetadata();
        metadata.setContentType(multipartFile.getContentType());
        metadata.setContentLength(multipartFile.getSize());
        String urlString = null;
        try {
            StringBuffer sb = new StringBuffer(bucketName);
            sb.append("/");
            sb.append(time);
            sb.append("/");
            sb.append(uuId);
            //sb作为该文件的唯一标识符key
            s3Client.putObject(new PutObjectRequest(bucketName, sb.toString(), multipartFile.getInputStream(), metadata)
                    .withCannedAcl(CannedAccessControlList.PublicRead));//权限
            GeneratePresignedUrlRequest urlRequest = new GeneratePresignedUrlRequest(
                    bucketName, sb.toString());
            URL url = s3Client.generatePresignedUrl(urlRequest);
            String[] urlArr = url.toString().split("\\?");
            urlString = urlArr[0];
        } catch (Exception e) {
            e.printStackTrace();
        }
        return urlString;
    }


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值