【SpringBoot实战】基于阿里云实现文件上传

【SpringBoot实战】基于阿里云实现文件上传

在实际项目开发中,不可避免地会使用到阿里云OSS进行文件存储。尽管阿里云有详细的开发文档,但本篇博客的目的是让我们能够用简明的代码快速实现这个功能。

引入依赖

xml 复制代码
<dependencies>
    <!-- 阿里云oss依赖 -->
    <dependency>
        <groupId>com.aliyun.oss</groupId>
        <artifactId>aliyun-sdk-oss</artifactId>
        <version>3.9.1</version>
    </dependency>
    <!-- 日期工具栏依赖 -->
    <dependency>
        <groupId>joda-time</groupId>
        <artifactId>joda-time</artifactId>
        <version>2.10.1</version>
    </dependency>
</dependencies>

文件上传

java 复制代码
public String fileUpload(MultipartFile file) {
        String endpoint = "endpoint";  // 如:oss-cn-shanghai.aliyuncs.com
        String keyId = "keyId";
        String keySecret = "keySecret";
        String bucketName = "bucketName";  // bucket名称
        // 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, keyId, keySecret);
        try {
            InputStream inputStream = file.getInputStream();
            // 文件实际名称
            String filename = file.getOriginalFilename();
            // 使用uuid确保文件名唯一
            String uuid = UUID.randomUUID().toString().replaceAll("-", "");
            // 对上传文件进行分组,根据当前年/月/日
            String date = new DateTime().toString("yyyy/MM/dd");
            filename = date + "/" + uuid + filename;
            // 创建PutObjectRequest对象
            PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, filename, inputStream);
            // 设置该属性可以返回response。如果不设置,则返回的response为空
            putObjectRequest.setProcess("true");
            // 上传文件
            PutObjectResult result = ossClient.putObject(putObjectRequest);
            // 返回文件的url
            return result.getResponse().getUri();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
        return null;
    }
相关推荐
AD钙奶-lalala1 小时前
Mac OS上搭建 http server
java
皮皮林5515 小时前
SpringBoot 全局/局部双模式 Gzip 压缩实战:14MB GeoJSON 秒变 3MB
java·spring boot
weixin_456904275 小时前
Spring Boot 用户管理系统
java·spring boot·后端
趁你还年轻_5 小时前
异步编程CompletionService
java
DKPT5 小时前
Java内存区域与内存溢出
java·开发语言·jvm·笔记·学习
sibylyue5 小时前
Guava中常用的工具类
java·guava
奔跑吧邓邓子5 小时前
【Java实战㉞】从0到1:Spring Boot Web开发与接口设计实战
java·spring boot·实战·web开发·接口设计
专注API从业者5 小时前
Python/Java 代码示例:手把手教程调用 1688 API 获取商品详情实时数据
java·linux·数据库·python
茶本无香6 小时前
深入理解Spring Boot的EnvironmentPostProcessor:环境处理的黑科技
spring boot
奔跑吧邓邓子6 小时前
【Java实战㉝】Spring Boot实战:从入门到自动配置的进阶之路
java·spring boot·实战·自动配置