Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >实现标准S3协议的附件上传

实现标准S3协议的附件上传

原创
作者头像
西门呀在吹雪
修改于 2021-11-01 07:35:13
修改于 2021-11-01 07:35:13
2.9K00
代码可运行
举报
文章被收录于专栏:架构之巅架构之巅
运行总次数:0
代码可运行

S3是Simple Storage Service的缩写,即简单存储服务。亚马逊的名词缩写也都遵循这个习惯,例如Elastic Compute Cloud缩写为EC2等等。

目前腾讯云很多对象存储组件都是兼容s3协议的,因此我们实现标准的s3协议存储调用即可在各类对象存储场景中使用,show me the code

初始化s3 认证

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 AmazonS3 initAmazonS3Object() {
        // 新建一个凭证
        AWSCredentials credentials = new BasicAWSCredentials(("ak","sk");
        ClientConfiguration clientConfig = new ClientConfiguration();
        clientConfig.withProtocol(Protocol.HTTPS);
        AmazonS3 amazonS3Client = new AmazonS3Client(credentials, clientConfig);
        // 对象网关地址
        amazonS3Client.setEndpoint(properties.getEndpoint());
        return amazonS3Client;
    }

上传的具体方法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 StoreEntity uploadFile(MultipartFile file) throws UniStorageException {
        Assert.notNull(file, UniStorageProperties.PARAM_MUST_NOT_EMPTY);
        String originalName = file.getOriginalFilename();
        assert originalName != null;
        String fileType = originalName.substring(originalName.lastIndexOf(".") + 1);
        String storageName = IdGen.uuid() + "." + fileType;
        //路径修改
        String filePath = UniStorageUtils.timePathYMD(System.currentTimeMillis()) + "/" + storageName;


        System.setProperty("com.amazonaws.sdk.disableCertChecking", "true");

        AmazonS3 amazonS3 = initAmazonS3Object();
        try {

            //文件名:filePath, 文件流:file.getInputStream()
            amazonS3.putObject(properties.getBucketName(), filePath, file.getInputStream(), new ObjectMetadata());
            //文件名:filePath,CannedAccessControlList.Private:私有
            amazonS3.setObjectAcl(properties.getBucketName(), filePath, CannedAccessControlList.Private);
        } catch (Exception e) {
            log.error("存储异常{}", e);
            throw new Exception("存储异常");
        }
        return new StoreEntity(storageName, originalName, filePath, file.getSize(), fileType);
    }

以上代码在ceph、minio测试通过

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
SpringBoot × MinIO 极速开发指南:对象存储服务高可用实战
MinIO的在Linux上的部署可以参考:MinIO在Linux上的安装与部署_minio linux部署-CSDN博客
摘星.
2025/05/20
1080
SpringBoot × MinIO 极速开发指南:对象存储服务高可用实战
通过S3协议实现通用的文件存储服务中间件
在日常开发文件上传相关服务时,通常都会选择腾讯云,阿里云,七牛云等提供的oss服务作为文件存储系统,如果需要自行搭建文件存储系统,通常则会采用minio等开源项目。
大忽悠爱学习
2022/09/28
5.8K0
通过S3协议实现通用的文件存储服务中间件
这才是企业级的oss-spring-boot-starter,开箱即用!
本文主要讲解企业级OSS对象存储服务Spring Boot Starter制作,开箱即用,为项目进行赋能。基于AmazonS3协议,适配市面上的对象存储服务如:阿里云OSS、腾讯COS、七牛云OSS、MInio等等 什么是OSS? OSS(Object Storage Service),对象存储服务,对象存储服务是一种使用HTTP API存储和检索对象的工具。就是将系统所要用的文件上传到云硬盘上,该云硬盘提供了文件下载、上传、预览等一系列服务,具备版本,权限控制能力,具备数据生命周期管理能力这样的服务以及技术可以统称为OSS OSS在项目中的使用 OSS对象存储在目前大部分项目中必不可少的存在,如下图所示。
民工哥
2024/04/02
4810
这才是企业级的oss-spring-boot-starter,开箱即用!
AWS S3 学习小结
1.首先,这个是AWS的开发资源使用文档:AWS开发文档,AWS官网 – S3教程
全栈程序员站长
2022/11/03
1.9K0
腾讯云对象存储
  对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
别团等shy哥发育
2023/02/25
59.1K2
腾讯云对象存储
s3 aws 临时授权
https://docs.aws.amazon.com/zh_cn/AmazonS3/latest/userguide/AuthUsingTempSessionToken.html
周杰伦本人
2022/10/25
1.3K0
Hadoop文件系统支持释疑之S3
  Hadoop版本提供了对多种文件系统的支持,但是这些文件系统是以何种方式实现的,其实现原理是什么以前并没有深究过。今天正好有人咨询我这个问题:Hadoop对S3的支持原理是什么?特此总结一下。Hadoop支持的文件系统包括:  
数据饕餮
2019/01/14
1.2K0
Java springboot项目引入腾讯云COS实现上传
此处给的为默认值,如需改变对应参数,需在application.properties中进行配置
六月的雨在Tencent
2024/03/28
1.1K0
如何使用亚马逊对象存储AWS S3 SDK访问腾讯云存储COS
COS 提供了 AWS S3 兼容的 API,因此当您的数据从 S3 迁移到 COS 之后,只需要进行简单的配置修改,即可让您的客户端应用轻松兼容 COS 服务。本文主要介绍不同开发平台的 S3 SDK 的适配步骤。在完成添加适配步骤后,您就可以使用 S3 SDK 的接口来访问 COS 上的文件了。
云存储
2020/05/26
4.5K0
springboot通过文件流的方式上传文件到腾讯云cos代码记录
用户9131103
2023/07/17
1.1K0
spring整合s3实现文件上传下载
pom依赖 <!-- https://mvnrepository.com/artifact/com.amazonaws/aws-java-sdk-s3 --> <dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-java-sdk-s3</artifactId> <version>1.11.803</version> </
高大北
2022/10/31
1.9K0
Spring Boot整合MinIO实现文件上传和下载
家人们啦!,上篇文章了,我们讲了如何使用docker-compose快速部署MinIO,在今天的文章中,我将向大家介绍如何将Spring Boot与MinIO进行无缝整合,以便高效地管理和操作文件存储。通过这个整合,你将能够轻松地在Spring Boot应用程序中实现文件的上传和下载等功能。让我们开始吧
修己xj
2023/08/25
1.1K0
Spring Boot整合MinIO实现文件上传和下载
十.Springboot实现用户文件的上传
前言 文件的上传采用的是MultipartFile工具类进行获取的,最后将流保存为临时文件以异步的形式保存到腾讯云cos服务! ps:(本期只贴出关于文件上传块的代码,数据持久层代码将不展示!无外呼增删改查,没啥特别的操作!) 对象存储工具类(cos) pom依赖引入 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-conf
用户8988577
2022/12/27
8190
AI实现代码转换,Python转Java,Java转Go不再困难?
今天看到个有趣的网站,给大家分享一下。 该网站的功能很神奇,可以实现编程语言的转化。 感觉在一些场景之下还是有点作用的,比如你原来跟我一样是做Java的,因为工作需要突然转Go。这个时候用你Java的经验 + 这个工具,或许可以起到一定的帮助作用。 工具的使用很简单,只需要在左侧黏贴你想转换的原始代码,然后点击CONVERT CODE,右侧输入框就会转换成目标代码: 是不是很神奇?关注公众号“程序猿DD”,回复“代码转换”获取网站地址,一起来试试看吧! 也许你跟我一样,觉得只能实现这样简单的代码转换
程序猿DD
2023/04/24
6180
AI实现代码转换,Python转Java,Java转Go不再困难?
我花了3块6,给自己搞了一个在线图床功能
随着社交媒体和图片分享平台的广泛应用,图床(即图片托管服务)成为了开发者和内容创作者不可或缺的一部分。图床允许用户将图片上传到云端存储,并通过 URL 进行访问,减少了用户设备上的存储空间占用,同时提供了高效的图片管理和访问方式。腾讯云的轻量对象存储(COS)为开发者提供了一个简单且高效的图床解决方案,本文将介绍如何使用腾讯云 COS 构建一个完整的在线图床功能。
不惑
2024/11/12
7902
我花了3块6,给自己搞了一个在线图床功能
SpringBoot - FileStorage Starter场景启动器
Spring Boot - 手把手教小师妹自定义Spring Boot Starter
小小工匠
2022/04/21
1.3K0
SpringBoot - FileStorage Starter场景启动器
k8s中通过aws sdk访问s3遇到的坑
由于java使用命令行时可能会出现卡死现象,所以这里想使用aws提供的sdk来直接上传下载文件。 默认有两种方式,一种是程序中配置key:
一笠风雨任生平
2022/01/06
2.2K0
k8s中通过aws sdk访问s3遇到的坑
基于springboot架构的读取excel 图片并自动上传
六月的雨在Tencent
2024/03/28
2220
基于springboot架构的读取excel 图片并自动上传
移动云存储上传文件
首先是LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))生成的日期
阿超
2022/08/16
7.6K0
移动云存储上传文件
springboot 项目读取默认配置
配置文件中有对应key-value的配置时,则读取配置文件中的配置,如果没有对应的key-value时则读取默认的配置
六月的雨在Tencent
2024/03/28
1490
相关推荐
SpringBoot × MinIO 极速开发指南:对象存储服务高可用实战
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验