栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

AmzoneS3上传文件权限问题

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

AmzoneS3上传文件权限问题

目录

1.背景

2.环境

3.问题和解决方法

4.参考文档


1.背景

项目中遇到一个使用Amzone S3上传文件到对象存储后,权限不满足预期的问题。调试了很久,百度了很久。最终还是综合各种信息,加上自己理解,才搞定这一问题。回头看,问题本身并不难,还是自己需要多修炼。这里简单做个记录吧,也是对“坑”内经验的总结。

2.环境

JDK:1.8.0_111

Springboot:2.1.2.RELEASE

AmzoneS3:aws-java-sdk-s3 v1.11.830

3.问题和解决方法

在S3源码中,这里有4个函数,均可用于文件上传

PutObjectResult putObject(PutObjectRequest var1) throws SdkClientException, AmazonServiceException;

PutObjectResult putObject(String var1, String var2, File var3) throws SdkClientException, AmazonServiceException;

PutObjectResult putObject(String var1, String var2, InputStream var3, Objectmetadata var4) throws SdkClientException, AmazonServiceException;

PutObjectResult putObject(String var1, String var2, String var3) throws AmazonServiceException, SdkClientException;

当时觉得第二种方式较为简单,结果就此开启“坑途”。中间还有个插曲,因为在SpringBoot中,采用了MultipartFile方式上传文件,还扒了扒怎样将MultipartFile转化为File。

采用File方式上传的文件,缺省是private权限,即私有读写,可以通过getObjectAcl()查看权限。

解决方法:采用第三个函数,在header中设置权限

public void upload(MultipartFile file){

    String fileName = file.getOriginalFilename();

    try{
        AmazonS3 s3 = ...;  // 这里是连接对象存储的实例

        Objectmetadata objectmetadata = new Objectmetadata();
        objectmetadata.setHeader("x-amz-acl", "public-read");

        InputStream inputStream = file.getInputStream();
        s3.putObject(BUCKET_NAME, fileName, inputStream, objectmetadata)    // BUCKET_NAME已设定好的bucket
        s3.shutdown();
    }catch(Exception e){
        e.printStackTrace();
    }
}

4.参考文档

Access control list (ACL) overview - Amazon Simple Storage Service

亚马逊网络服务-AWS S3 node.js SDK上传的文件和文件夹权限 - ITranslater

管理Amazon S3存储桶和对象的访问权限 - AWS SDK for Java

如何通过亚马逊S3 API设置在上传时文件的权限 - IT屋-程序员软件开发技术分享社区

使用AWS SDK for Java 上传和下载文件_maowenbei的博客-CSDN博客

MultipartFile File相互转化 - 孤城丶闭 - 博客园

快速入门 - 对象存储 OSS - 阿里云

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/306974.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号