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

阿里云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());
        }
    }

六、第六步

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

预览

七、第七步

前端页面展示效果,预览

文件上传

相关文章:

  • 用C语言实现一个链表(四)
  • 深度学习原理与Pytorch实战
  • VS Code 如何搭建CC++开发环境
  • 【C语言】字符函数与字符串函数
  • 【动手实验】TCP半连接队列、全连接队列实战分析
  • 军事理论综合版参考答案
  • 计算机三级网络技术备考(3)
  • 大白话React 虚拟 DOM,好处在哪里?跟vue有什区别
  • Linux上用C++和GCC开发程序实现两个不同MySQL实例下单个Schema稳定高效的数据迁移到其它MySQL实例
  • Linux 检测内存泄漏方法总结
  • linux中断调用流程(arm)
  • getMergedLocalBeanDefinition 方法的作用
  • ChatGPT与DeepSeek:AI语言模型的巅峰对决
  • 广东专插本-政治毛泽东思想学习笔记
  • 深入浅出数据结构(图)
  • 使用Hydra进行AI项目的动态配置管理
  • 【大模型技术】大模型推理优化方法及代码实现总结篇
  • Java数据结构_一篇文章了解常用排序_8.1
  • MyBatis中是如何对占位符进行赋值的?
  • python数据容器切片
  • 在吗做网站商城/网站推广营销运营方式
  • 免费个人网站制作在线/百度seo优化网站
  • 不更新网站如何做排名/搜索引擎优化的主要手段
  • 有哪些网站教做吃的/网络推广技术外包
  • 找别人做网站/百度收录入口
  • 东莞网站优化seo/排名优化百度