上代码:

一、Controller层:

@ApiOperation("上传作品图片")
@PostMapping(value = "uploadCalligraphy")
public String uploadFile(MultipartFile[] multipartFiles){

if(multipartFiles == null){
        return ResultUtil.errorMsg("上传图片不能为空!");
    }

if(multipartFiles !=null && multipartFiles.length<=0){
        return ResultUtil.errorMsg("上传图片不能为空!");
    }

return uploadService.uploadFile(multipartFiles);
}

二、Service业务服务层:

@Override
  public String uploadFile(MultipartFile[] multipartFiles) {

List<String> picUrls = new ArrayList<>();

try {
            for (MultipartFile file : multipartFiles) {
                String cgyUrl =this.httpBaseUrl +  ossService.uploadImage(file);
                picUrls.add(cgyUrl);
            }
            log.info(">>> Upload pic SECCUSS!And return pic url :{}", JSONObject.toJSON(picUrls));

} catch (Exception e) {
            log.error("xx>>> Upload pic EXCEPTION!The reason:", e);
            return ResultUtil.errorMsg("上传书法图片异常!");
        }

Map<String, List> resultMap = new HashMap<>();
        resultMap.put("picUrls", picUrls);
        return ResultUtil.successMsg(resultMap);
    }

三、OSS对象存储服务层

application.yml:

upload:
  img:
    filepath: /home/upload-file/img/test

@Value("${upload.img.filepath}")
    public String imgFilePath ;

@Override
    public String uploadImage(MultipartFile file) throws Exception{

// 获取文件后缀
        String fileNameOld = file.getOriginalFilename();
        String fileSuffix = fileNameOld.substring( fileNameOld.lastIndexOf("."), fileNameOld.length());

// 新的文件名
        String fileNameNew = System.currentTimeMillis() + "_" +new Random().nextInt(1000) + fileSuffix;

//获取文件夹路径
        String dataPath = DateUtil.DateTime2FormatStr(new Date(), DateUtil.DATE_FORMAT_CONCAT);
        File dateFile =new File(imgFilePath + "/" + dataPath);

// 如果文件夹不存在则创建
        if(!dateFile .exists()  && !dateFile .isDirectory()){
            dateFile .mkdir();
        }

// 将图片存入文件夹
        File targetFile = new File(dateFile, fileNameNew);

//将上传的文件写到服务器上指定的文件。
        file.transferTo(targetFile);

String returnUrl = dataPath + "/" + fileNameNew;
        return returnUrl ;
    }

四、Tomcat  映射文件配置:

<Context docBase="D:\usr\local\eben\img\test" path="/img/test" reloadable="true"/>

SpringBoot:上传文件(图片、语音)到本地服务器方案相关推荐

  1. SpringBoot上传文件并储存到本地(记录)

    主要是通过[MultipartFile]作为参数类型来实现文件上传的. 1.相关controller代码如下: @RequestMapping(value = "/upload", ...

  2. springboot上传文件到阿里云

    springboot上传文件到OSS 前提声明,文章借鉴了https://blog.csdn.net/wonder_dog/article/details/81152307#commentsedit博 ...

  3. SpringBoot上传文件到 后端服务器 或 云服务器(七牛云、阿里云、腾讯云等等都是一样的操作步骤)

    文章目录 一.新建SpringBoot项目 1.pom.xml 2.application.yml 3.配置Swagger3 4.统一返回类Result 5.统一异常响应ErrorCode 二.上传文 ...

  4. 上传excel腾讯云服务器,使用SpringBoot上传文件到腾讯云

    最近在做一个项目,涉及到腾讯云上传文件/图片到服务器,为了图方便并且提升访问速度,想着上传到腾讯云存储桶是一个不错的选择.腾讯云存储桶的创建可见我之前的文章. 当然存储桶里面不仅可以存图片,也可以存储 ...

  5. springboot上传文件过大,全局异常捕获,客户端没有返回值

    springboot上传文件过大,全局异常捕获,客户端没有返回值 参考文章: (1)springboot上传文件过大,全局异常捕获,客户端没有返回值 (2)https://www.cnblogs.co ...

  6. springBoot上传文件时MultipartFile报空问题解决方法

    springBoot上传文件时MultipartFile报空问题解决方法 参考文章: (1)springBoot上传文件时MultipartFile报空问题解决方法 (2)https://www.cn ...

  7. 使用Node.js express 开发上传文件/图片api接口

    我是傲夫靠斯,欢迎关注我的公众号[前端工程师的自我修养],每天更新. 今天我们来搞一个Node.js Express的上传文件功能,我使用了busboy这个库. Busboy是一个基于事件的文件流解析 ...

  8. 七牛云 vue 图片上传简单解说,js 上传文件图片

    七牛云 vue 图片上传简单解说,js 上传文件图片 一.七牛云简介 首次使用七牛云存储进行项目的图片存储,整了一上午才整明白,这些官方的教程把明白人也给说糊涂了,文档很不规范. 七牛云有免费的使用额 ...

  9. JAVA上传文件图片到服务器保存

    这里我记录一个比较简单方便操作的JAVA上传文件图片到服务器并且保存! 首先是页面 html的   我这是提交一个文件和类型 <div style="border: 1px solid ...

  10. tp6 接口上传文件/图片报错 fopen(/www/wwwroot/***/public/storage/**failed to open stream: Permission denied

    tp6 接口上传文件/图片报错 fopen(/www/wwwroot/***/public/storage/**failed to open stream: Permission denied 这是因 ...

最新文章

  1. java模拟验证码生成
  2. ORA-14452的出现原因解析及解决方法
  3. LeetCode 3. 无重复字符的最长子串(Longest Substring Without Repeating Characters)
  4. 最简单的基于FFMPEG的Helloworld程序
  5. 计算机考试考前准备,考前必看如何正确准备计算机等级考试 -电脑资料
  6. Linux vim编写编译运行一个.c文件(centeos 8 HelloWorld.c)
  7. pro c 访问 MySQL_Pro*C  OCI  OCCI  及OCI介绍
  8. netcore开源框架_Mono和.NET Core 从比翼双飞到合体
  9. Android利用Filter过滤数据
  10. 【转载】Understanding When to use RabbitMQ or Apache Kafka
  11. Multi-View 3D Reconstruction
  12. [转载] Java8新特性-003-Java8接口中的default修饰符
  13. 认识电脑键盘附加快捷键
  14. html背景消除重复,html – CSS背景渐变重复问题
  15. source insight使用2---设置全选为Ctrl+a
  16. adobe xd_如何在Adobe XD中创建Finance App UI设计
  17. 如何高效设计游戏——游戏伤害公式的量身定做
  18. python分位数回归模型_GitHub - lei940324/Quantile: 介绍分位数回归,包括分位数Granger因果检验、QVAR及脉冲响应函数...
  19. java 15k_月薪15K的Java工程师必备的十大技能
  20. 从苏宁电器到卡巴斯基第20篇:曲折考研路(补)

热门文章

  1. 【Windows10】VS2019+Cmake安装mitsuba2
  2. CentOS系统中安装QQ2012
  3. 内存卡的视频容易恢复吗?恢复视频的诀窍
  4. 计数排序(python)
  5. 2023计算机毕业设计SSM最新选题之java企业部门报销管理g9d62
  6. 手机如何测光照度_如何测量光照强度
  7. 触动精灵学习笔记(1)
  8. 见证海马S7手动型的高配置
  9. 如何做好固定资产管理?易点易动提供智能化方案
  10. 魔兽世界335 自动加入公会教程