• 背景
    项目里有图片上传的需求,具体实现是后端生成presigned url(预签名url,里面包含上传到AWS S3所需要的一些认证标识信息)给到前端,前端通过这个URL将文件上传到云服务上。但是上传成功后,从CDN上下载下来的文件打不开,而且只有前端有这个问题,客户端可以正常上传,一开始以为是框架问题,而且亚马逊官方也没有直接上传相关的文档(都是使用SDK的方式上传),所以问题很难定位,后来在github上找到了方案。
  • 从后端获取presigned url ,亚马逊官网有Java、PHP、node等生成presigned url的文档
    在这里插入图片描述
  • 使用presigned url上传图片,前端使用的是element UI + axios, 这里使用的element UI 自定义上传的方式,特别需要注意的就是直接上传文件,不要用formdata的格式上传
  • HTML部分

     <el-upload
         class="avatar-uploader"
         action="123"
        :http-request="upload"
        :before-upload="beforeAvatarUpload">
        <img v-i
    import com.amazon aws .auth. AWS Credentials; import com.amazon aws .auth. AWS StaticCredentialsProvider; import com.amazon aws .a...
    当我们通过java的API 上传 文件 的时候就会发现,我们把java的API封装了一下,提供了一个接口给其他应用调用,那么整个的 上传 流程就变成了“应用客户端”-->“JavaAPI端”-->“minio 服务 端”。中间通过JavaAPI转了一次。比如我们的“应用客户端”是web浏览器的时候,能不能直接从浏览器 上传 到“minio 服务 端”呢?答案是可以的,minio有提供 JS SDK,我们可以通过 JS API直接 上传 到“minio 服务 端”。 JS SDK 参考官网的文档:https://docs.min.i
    @GetMapping ( "/uploadFile" ) public Object generate PreSigned Url AndUploadObject ( String fileName ) { Map<St.