当前位置: 首页 > article >正文

阿里云oss文件上传springboot若依java

一、第一步

        引入依赖

<!-- 阿里云OSS -->
<dependency>
   <groupId>com.aliyun.oss</groupId>
   <artifactId>aliyun-sdk-oss</artifactId>
</dependency>

二、第二步      

          application.yml

#阿里云oss服务配置
aliyun:
  oss:
    endpoint: oss-cn-hangzhou.aliyuncs.com
    accessKeyId: LTAI4G9eB**********
    accessKeySecret: zsAM2Jkr*******
    bucketName: *****

其中bucketName是 存储空间名称,注意这以下几个地方
        

三、第三步

import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class OssConfig {

    @Value("${aliyun.oss.endpoint}")
    private String endpoint;

    @Value("${aliyun.oss.accessKeyId}")
    private String accessKeyId;

    @Value("${aliyun.oss.accessKeySecret}")
    private String accessKeySecret;

    @Bean(destroyMethod = "shutdown")
    public OSS ossClient() {
        return new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
    }
}

四、第四步


import com.aliyun.oss.OSS;
import com.oversea.common.config.OverseaConfig;
import com.oversea.common.core.domain.AjaxResult;
import com.oversea.common.utils.file.FileUploadUtils;
import com.oversea.common.utils.file.FileUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.io.InputStream;
import java.time.LocalDate;
import java.util.UUID;

@Service
public class OssService {

    @Autowired
    private OSS ossClient;

    @Value("${aliyun.oss.bucketName}")
    private String bucketName;

    @Value("${aliyun.oss.endpoint}")
    private String endpoint;

    /**
     * 上传文件到OSS的指定路径 /oss/uploads/oversea/YYYY/MM/DD/
     */
    public AjaxResult uploadFile(MultipartFile file) throws IOException {
        try (InputStream inputStream = file.getInputStream()) {
            // 获取当前日期
            LocalDate now = LocalDate.now();

            // 构建目标文件夹路径(格式:oss/uploads/oversea/YYYY/MM/DD/)
            String folderPath = String.format("oss/uploads/oversea/%d/%02d/%02d/",
                    now.getYear(), now.getMonthValue(), now.getDayOfMonth());

            // 确保文件夹路径以斜杠结尾(这里已经确保了)

            // 构建唯一文件名,包含指定的文件夹路径
            String fileName = folderPath + UUID.randomUUID() + "_" + file.getOriginalFilename();

            // 上传文件流到指定位置
            ossClient.putObject(bucketName, fileName, inputStream);

            // 返回文件访问链接
            String url = "https://" + bucketName + "." + endpoint + "/" + fileName;

            AjaxResult ajax = AjaxResult.success();
            ajax.put("url", url);
            ajax.put("fileName", fileName);
            ajax.put("newFileName", fileName.substring(fileName.lastIndexOf("/") + 1));
            ajax.put("originalFilename", file.getOriginalFilename());
            return ajax;
        }
    }
}

五、第五步

/**
     * 文件上传接口
     */
    @PostMapping("/uploadOss")
    public AjaxResult uploadOss(MultipartFile file) throws Exception {
        try {
            return ossService.uploadFile(file);
        } catch (Exception e) {
            return AjaxResult.error(e.getMessage());
        }
    }

六、第六步

前端若依框架组件调用,文件或者图片上传

预览

七、第七步

前端页面展示效果,预览

文件上传


http://www.kler.cn/a/566922.html

相关文章:

  • 25新闻研究生复试面试问题汇总 新闻专业知识问题很全! 新闻复试全流程攻略 新闻考研复试调剂真题总结
  • 深度解读 AMS1117:从电气参数到应用电路的全面剖析
  • day02_Java基础
  • 网络安全技术与应用
  • C++题解(31) 2025顺德一中少科院信息学创新班(四期)考核:U537296 青蛙的距离 题解
  • Tomcat的server.xml配置详解
  • Tomcat10下载安装教程
  • ssh配置 远程控制 远程协作 github本地配置
  • 量子计算 + 药物开发:打开分子模拟的新纪元
  • java面试笔记(二)
  • 版图自动化连接算法开发 00002 ------ 添加一个中间点实现 Manhattan 方式连接两个给定的坐标点
  • Brave 132 编译指南 Android 篇 - 编译准备:系统要求与推荐工具 (三)
  • 苹果iPhone 17 Pro系列将配备12GB内存,AI功能成升级关键
  • 512台无人机!GCBF+如何实现大规模多智能体动态避障的?
  • 单链表删除算法(p=L; j=0;与p=p->next;j=1的辨析)
  • HBuilder X中,uni-app、js的延时操作及定时器
  • 【网络】网络层IP协议
  • Ubuntu22.04安装docker教程
  • 大白话解释负载均衡Nginx是什么 有什么用 怎么用#
  • 力扣hot100刷题——41~50