springboot配置阿里云OSS存储实现文件上传下载功能

本文涉及的产品
对象存储 OSS,标准 - 本地冗余存储 20GB 3个月
对象存储 OSS,内容安全 1000 次 1年
对象存储 OSS,标准 - 同城冗余存储 20GB 3个月
简介: 【1月更文挑战第1天】springboot配置阿里云OSS存储实现文件上传下载功能

要在Spring Boot中配置阿里云OSS存储实现文件上传下载功能,你可以按照以下步骤操作:

  1. 引入相关依赖:
    pom.xml文件中添加以下依赖:

    <dependency>
     <groupId>com.aliyun.oss</groupId>
     <artifactId>aliyun-sdk-oss</artifactId>
     <version>3.10.4</version>
    </dependency>
    
  2. 配置OSS相关参数:
    application.propertiesapplication.yml文件中配置阿里云OSS的accessKeyId、accessKeySecret、endpoint、bucket等参数:

    oss.endpoint=your_endpoint
    oss.accessKeyId=your_access_key_id
    oss.accessKeySecret=your_access_key_secret
    oss.bucketName=your_bucket_name
    
  3. 创建OSS客户端:
    创建一个OSS客户端的bean,用于操作OSS:

    @Configuration
    public class OSSConfig {
         
    
     @Value("${oss.endpoint}")
     private String endpoint;
    
     @Value("${oss.accessKeyId}")
     private String accessKeyId;
    
     @Value("${oss.accessKeySecret}")
     private String accessKeySecret;
    
     @Bean
     public OSSClient ossClient() {
         
         return new OSSClient(endpoint, accessKeyId, accessKeySecret);
     }
    }
    
  4. 实现文件上传和下载的方法:
    创建一个Service或Controller类,实现文件上传和下载的方法:

    @Service
    public class FileService {
         
    
     @Autowired
     private OSSClient ossClient;
    
     @Value("${oss.bucketName}")
     private String bucketName;
    
     public String uploadFile(String filename, InputStream inputStream) {
         
         ossClient.putObject(bucketName, filename, inputStream);
         // 返回文件的URL
         return ossClient.generatePresignedUrl(bucketName, filename, new Date(System.currentTimeMillis() + 3600 * 1000)).toString();
     }
    
     public InputStream downloadFile(String filename) {
         
         OSSObject ossObject = ossClient.getObject(bucketName, filename);
         return ossObject.getObjectContent();
     }
    }
    
  5. 调用文件上传和下载的方法:
    在Controller中调用文件上传和下载的方法:

    @RestController
    public class FileController {
         
    
     @Autowired
     private FileService fileService;
    
     @PostMapping("/upload")
     public String uploadFile(@RequestParam("file") MultipartFile file) throws IOException {
         
         // 获取文件的输入流
         InputStream inputStream = file.getInputStream();
         // 生成文件名
         String filename = UUID.randomUUID().toString() + file.getOriginalFilename();
         // 调用文件上传方法
         String fileUrl = fileService.uploadFile(filename, inputStream);
         return fileUrl;
     }
    
     @GetMapping("/download/{filename}")
     public ResponseEntity<InputStreamResource> downloadFile(@PathVariable("filename") String filename) throws IOException {
         
         // 调用文件下载方法
         InputStream inputStream = fileService.downloadFile(filename);
         // 设置文件响应头
         HttpHeaders headers = new HttpHeaders();
         headers.add("Content-Disposition", "attachment; filename=" + filename);
         return ResponseEntity.ok()
                 .headers(headers)
                 .contentType(MediaType.APPLICATION_OCTET_STREAM)
                 .body(new InputStreamResource(inputStream));
     }
    }
    

以上就是在Spring Boot中配置阿里云OSS存储实现文件上传下载功能的步骤。你可以根据自己的需求进行修改和扩展。

相关实践学习
通义万相文本绘图与人像美化
本解决方案展示了如何利用自研的通义万相AIGC技术在Web服务中实现先进的图像生成。
相关文章
|
30天前
|
存储 人工智能 Cloud Native
阿里云渠道商:OSS与传统存储系统的差异在哪里?
本文对比传统存储与云原生对象存储OSS的架构差异,涵盖性能、成本、扩展性等方面。OSS凭借高持久性、弹性扩容及与云服务深度集成,成为大数据与AI时代的优选方案。
|
3月前
|
存储 运维 安全
阿里云国际站OSS与自建存储的区别
阿里云国际站对象存储OSS提供海量、安全、低成本的云存储解决方案。相比自建存储,OSS具备易用性强、稳定性高、安全性好、成本更低等优势,支持无限扩展、自动冗余、多层防护及丰富增值服务,助力企业高效管理数据。
|
3月前
|
存储 域名解析 前端开发
震惊!不买服务器,还可以用阿里云国际站 OSS 轻松搭建静态网站
在数字化时代,利用阿里云国际站OSS可低成本搭建静态网站。本文详解OSS优势及步骤:创建Bucket、上传文件、配置首页与404页面、绑定域名等,助你快速上线个人或小型业务网站,操作简单,成本低廉,适合初学者与中小企业。
|
4月前
|
Java Spring
Spring Boot配置的优先级?
在Spring Boot项目中,配置可通过配置文件和外部配置实现。支持的配置文件包括application.properties、application.yml和application.yaml,优先级依次降低。外部配置常用方式有Java系统属性(如-Dserver.port=9001)和命令行参数(如--server.port=10010),其中命令行参数优先级高于系统属性。整体优先级顺序为:命令行参数 &gt; Java系统属性 &gt; application.properties &gt; application.yml &gt; application.yaml。
924 0
|
1月前
|
JavaScript Java Maven
【SpringBoot(二)】带你认识Yaml配置文件类型、SpringMVC的资源访问路径 和 静态资源配置的原理!
SpringBoot专栏第二章,从本章开始正式进入SpringBoot的WEB阶段开发,本章先带你认识yaml配置文件和资源的路径配置原理,以方便在后面的文章中打下基础
266 3
|
2月前
|
缓存 Java 应用服务中间件
Spring Boot配置优化:Tomcat+数据库+缓存+日志,全场景教程
本文详解Spring Boot十大核心配置优化技巧,涵盖Tomcat连接池、数据库连接池、Jackson时区、日志管理、缓存策略、异步线程池等关键配置,结合代码示例与通俗解释,助你轻松掌握高并发场景下的性能调优方法,适用于实际项目落地。
517 5
|
2月前
|
传感器 Java 数据库
探索Spring Boot的@Conditional注解的上下文配置
Spring Boot 的 `@Conditional` 注解可根据不同条件动态控制 Bean 的加载,提升应用的灵活性与可配置性。本文深入解析其用法与优势,并结合实例展示如何通过自定义条件类实现环境适配的智能配置。
170 0
探索Spring Boot的@Conditional注解的上下文配置
|
3月前
|
安全 算法 Java
在Spring Boot中应用Jasypt以加密配置信息。
通过以上步骤,可以在Spring Boot应用中有效地利用Jasypt对配置信息进行加密,这样即使配置文件被泄露,其中的敏感信息也不会直接暴露给攻击者。这是一种在不牺牲操作复杂度的情况下提升应用安全性的简便方法。
960 10
|
4月前
|
人工智能 安全 Java
Spring Boot yml 配置敏感信息加密
本文介绍了如何在 Spring Boot 项目中使用 Jasypt 实现配置文件加密,包含添加依赖、配置密钥、生成加密值、在配置中使用加密值及验证步骤,并提供了注意事项,确保敏感信息的安全管理。
1103 1

相关产品

  • 对象存储