主要是通过【MultipartFile】作为参数类型来实现文件上传的。

1、相关controller代码如下:

@RequestMapping(value = "/upload", method = RequestMethod.POST)
public String upload(@RequestParam("file")MultipartFile file) {if (Objects.isNull(file) || file.isEmpty()) {//判断非空return "文件为空,请重新上传";}try {byte[] bytes = file.getBytes();//要存入本地的地址放到path里面Path path = Paths.get( FileUtils.UPLOAD_FOLDER + "/");//如果没有files文件夹,则创建if (!Files.isWritable(path)) {Files.createDirectories(path);}String extension = FileUtils.getFileExtension(file);  //获取文件后缀FileUtils.getFileByBytes(bytes, FileUtils.UPLOAD_FOLDER, "上传文件" + extension);return "上传成功";} catch (Exception e) {e.printStackTrace();}return "上传失败";
}

2、FileUtils.java的文件代码如下:

public class FileUtils {//这是本地存入的格式,上传到服务器的话,格式类似于,"/root/images/pc/"public static String UPLOAD_FOLDER = "D:/images/pc/";/*** 将文件转换成Byte数组** @param pathStr* @return*/public static byte[] getBytesByFile(String pathStr) {File file = new File(pathStr);try {FileInputStream fis = new FileInputStream(file);ByteArrayOutputStream bos = new ByteArrayOutputStream(1024);byte[] b = new byte[1024];int n;while ((n = fis.read(b)) != -1) {bos.write(b, 0, n);}fis.close();byte[] data = bos.toByteArray();bos.close();return data;} catch (Exception e) {e.printStackTrace();}return null;}/*** 将Byte数组转换成文件** @param bytes* @param filePath* @param fileName*/public static void getFileByBytes(byte[] bytes, String filePath, String fileName) {BufferedOutputStream bos = null;FileOutputStream fos = null;File file = null;try {File dir = new File(filePath);if (!dir.exists() && dir.isDirectory()) {// 判断文件目录是否存在dir.mkdirs();}file = new File(filePath + "\\" + fileName);fos = new FileOutputStream(file);bos = new BufferedOutputStream(fos);bos.write(bytes);} catch (Exception e) {e.printStackTrace();} finally {if (bos != null) {try {bos.close();} catch (IOException e) {e.printStackTrace();}}if (fos != null) {try {fos.close();} catch (IOException e) {e.printStackTrace();}}}}/*** 获取文件后缀** @param File* @return*/public static String getFileExtension(MultipartFile File) {String originalFileName = File.getOriginalFilename();return originalFileName.substring(originalFileName.lastIndexOf("."));}
}

3、特别注意:由于SpringBoot默认上传文件大小为1M,所以在配置文件application.properties添加如下代码:(我这边改的是30M)

#设置文件上传大小
spring.servlet.multipart.max-file-size=31457280
spring.servlet.multipart.max-request-size=31457280

代码自行优化。

Android文件上传请求可参考:https://blog.csdn.net/lpCrazyBoy/article/details/84344646

SpringBoot上传文件并储存到本地(记录)相关推荐

  1. springboot上传文件到阿里云

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

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

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

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

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

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

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

  5. springboot 上传文件保存在本地磁盘

    1.修改application.properties配置文件,设置保存磁盘地址(方便以后修改) upload.path = /Users/myname/Documents/upload/ 地址自定义即 ...

  6. springboot 上传文件解析入库_十五分钟用Spring Boot实现文件上传功能

    Spring Boot最好的学习方法就是实战训练,今天我们用很短的时间启动我们第一个Spring Boot应用,并且制作一个文件上传系统, 用户可以将本地文件上传到服务器上.我将假设读者为几乎零基础, ...

  7. SpringBoot上传文件到本服务器 目录与jar包同级

    前言 看标题好像很简单的样子,但是针对使用jar包发布SpringBoot项目就不一样了. 当你使用tomcat发布项目的时候,上传文件存放会变得非常简单,因为你可以随意操作项目路径下的资源.但是当你 ...

  8. fileinput 加 ftp 加 nginx 加 SpringBoot上传文件

    亲测可用 准备linux服务器  https://www.cnblogs.com/shuaifing/p/8268949.html 搭建ftp https://www.cnblogs.com/shua ...

  9. springboot 上传文件解析入库_SpringBoot + easyexcel + WebUploader 实现文件上传并解析

    1. WebUploader的使用,引入css和js,css其实没什么用: 2. 定义上传框: 选择文件 开始上传 3.相关jquery: // 文件上传 jQuery(function() { va ...

最新文章

  1. keras.utils.to_categorical用法
  2. 万物皆对象java_又一次认识java(一) ---- 万物皆对象
  3. 综述 | 知识图谱向量化表示
  4. Flask框架(flask-script扩展命令行和flask中数据库migrate扩展的使用)
  5. CF1114F-Please, another Queries on Array?【线段树,欧拉函数】
  6. JMeter工具使用初探
  7. 别傻啦,不会高数,你连人话都听不懂
  8. iOS CAReplicatorLayer 简单动画
  9. rails mysql2 mac_用Mac osx10.6在Ruby on Rails上安裝mysql2 gem。
  10. win8蓝屏错误代码DPC_WATCHDOG_VIOLATION您的电脑遇到错误需要重启修复
  11. 利用EnableQ服务政府民意调查
  12. 教你用迅雷下载百度云网盘的大文件
  13. \t\t林荫苗圃 苗木和苗圃 好苗木种植技术是关键 它好我也好
  14. 在vue.js中实现a标签href tel的打电话功能
  15. 怎么恢复苹果内置的计算机,苹果自带软件删了怎么恢复原状
  16. 如何使用《背景音乐提取器》提取歌曲中的伴奏
  17. 最长上升子序列(O(nlogn))算法并输出最长上升子序列
  18. 几款强大的PPT制作辅助软件
  19. 计算机英语的英文参考文献,计算机英文参考文献翻译英语论文mmwq8yrl.doc
  20. 2023校招C++开发oppo笔试

热门文章

  1. 虚幻引擎5 C++编程学习
  2. PVT的spatial reduction attention(SRA)
  3. 选择高光阴影中间调的方法
  4. 被Linux之父骂醒?英伟达破天荒开源GPU内核驱动,网友:活久见
  5. android加密设备,用于Android手机的加密设备和加密外部SD卡
  6. 怎样删除具有trustedinstall权限的文件
  7. 乡村老师网络计算机培训日志,乡村教师网络研修心得体会
  8. upper_bound 和 lowwer_bound 用法
  9. win10计算机怎么拨号上网,宽带拨号,教您win10系统宽带拨号上网的教程
  10. Atomikos 中文说明文档(周枫翻译)