说明

用Spring的 MultipartFile在Springboot 中实现上传单个文件(多个文件)

多文件上传,大量文件时,防止文件名相同,重新修改存储文件名。


html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<h1>文件上传</h1>
<form method="post" action="/upload2.do" enctype="multipart/form-data"><input type="file"  name="files" multiple="multiple"/><br/><br/><input type="submit" value="上传" /><br/>
</form>
</body>
</html>

controller

package com.example.springBootdemo.controller;import java.io.File;
import java.io.IOException;
import java.util.UUID;import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;import com.example.springBootdemo.utils.FileUtils;
/*** 单文件、多文件上传* @author luolei* @date 2019年1月31日*/
@RestController
public class FileOperationController {/*** 单文件上传* @param file* @return* @throws IllegalStateException* @throws IOException* String*/@PostMapping("/upload.do")//@RequestMapping(value="/upload.do", method = RequestMethod.POST)//上传的文件会转换成MultipartFile对象,file名字对应html中上传控件的namepublic String upload(MultipartFile file) throws IllegalStateException, IOException{//取得当前上传文件的文件名称String originalFilename = file.getOriginalFilename();//transferTo是保存文件,参数就是要保存到的目录和名字String filePath = "C:\\Users\\Administrator\\Desktop\\images\\";file.transferTo(new File(filePath + originalFilename));System.out.println("文件类型:"+file.getContentType());  System.out.println("原文件名:"+originalFilename);System.out.println("是否为空:"+file.isEmpty());System.out.println("文件大小:"+file.getSize());       return "文件上传完毕";}/*** 多文件上传,大量文件时,防止文件名相同,重新修改存储文件名* @param files* @return* @throws IOException* String*/@PostMapping("/upload2.do")//@RequestMapping(value="/upload2.do", method = RequestMethod.POST)//上传的文件会转换成MultipartFile对象,file名字对应html中上传控件的namepublic String upload2(MultipartFile[] files) throws IOException{if(files.length == 0){return "请选择要上传的文件";}for (MultipartFile multipartFile : files) {if(multipartFile.isEmpty()){return "文件上传失败";}byte[] fileBytes = multipartFile.getBytes();String filePath = "C:\\Users\\Administrator\\Desktop\\images\\";//取得当前上传文件的文件名称String originalFilename = multipartFile.getOriginalFilename();//生成文件名String fileName = UUID.randomUUID() +"&"+ originalFilename;FileUtils.uploadFile(fileBytes, filePath, fileName);}return "文件上传完毕";}}

FileUtils 文件上传工具类

package com.example.springBootdemo.utils;import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
/*** 文件工具类* @author luolei* @date 2019年1月31日*/
public class FileUtils {/*** 文件上传方法* @param file 文件byte[]* @param filePath 文件上传路径* @param fileName 文件保存路径* @throws IOException * @throws Exception* void*/public static void uploadFile(byte[] file, String filePath, String fileName) throws IOException{File targetFile = new File(filePath);if(!targetFile.exists()){targetFile.mkdirs();}FileOutputStream out = new FileOutputStream(filePath + fileName);out.write(file);out.flush();out.close();}
}

application.properties

在Springboot中可以直接在配置文件中覆盖默认的静态资源路径的配置信息

在application.properties中配置 spring.resources.static-locations可以查看访问我们上传的文件。

#单文件限制大小
spring.http.multipart.maxFileSize=10MB
#一次请求限制大小
spring.http.multipart.maxRequestSize=500MB#在Springboot中可以直接在配置文件中覆盖默认的静态资源路径的配置信息
#配置静态资源目录,以逗号分隔多个目录,
#加file:是因为后面指定的是一个具体的硬盘路径,其他的使用classpath指的是系统环境变量
spring.resources.static-locations=classpath:/static/,file:C:/Users/Administrator/Desktop/images/

效果

访问图片、下载文件

SpringBoot 上传文件(单个、多个文件)相关推荐

  1. springboot上传文件到阿里云

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

  2. springboot 上传文件解析入库_springboot实现文件上传步骤解析

    这篇文章主要介绍了springboot实现文件上传步骤解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 第一步编写上传的前段页面 data-tar ...

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

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

  4. themyleaf 图片上传_javaEE --springboot #实现图片上传和回显 #单文件上传 #多文件上传 #ajax异步文件上传 (非常详细,从创建项目开始)...

    实现文件上传和回显 1.新建一个SpringBoot项目,选择 Spring Web 和 thymeleaf 依赖 .pow.xml文件下的依赖如下 2.根据下图,创建如下文件 3.直接上代码 配置文 ...

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

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

  6. smb 限制大文件上传_单个文件大小 上传百度云盘 微信发送 有大小限制 怎么破?...

    问题描述 百度云盘,单个文件20G,如果一个文件太大,就不能上传成功. 微信发送文件,单个文件100Mb,如果太大,就无法发送. QQ也有类似限制 如果解决呢??? 问题解决 使用rar文件压缩,或者 ...

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

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

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

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

  9. springboot上传下载文件(4)--上传下载工具类(已封装)

    因为在做毕设,发现之前的搭建ftp文件服务器,通过ftp协议无法操作虚拟机临时文件,又因为ftp文件服务器搭建的比较麻烦:而 hadoop的HDFS虽然可以实现,但我这里用不到那么复杂的:所以我封装了 ...

  10. SpringBoot分片上传、断点续传、大文件极速秒传功能(典藏版)

    SpringBoot分片上传.断点续传.大文件极速秒传功能,这篇都帮你搞定!(典藏版) Java研发军团 2023-02-03 21:00 文件上传是一个老生常谈的话题了,在文件相对比较小的情况下,可 ...

最新文章

  1. R语言广义线性模型Logistic回归模型列线图分析(nomogram)
  2. 我想问一下为什么会开3分钟系统自动会从新启动呢?
  3. JDBC第一篇之获得数据库连接
  4. 监控mysql的shell脚本_监控MySQL主从状态的shell脚本
  5. 在WCF中使用Flag Enumerations
  6. Windows10环境下使用Anaconda安装tensorflow环境及keras环境
  7. 本文主要总结关于mysql的优化(将会持续更新)
  8. Vagrant搭建可移动的PHP开发环境
  9. HTML期末学生大作业-乒乓球网页作业html+css+javascript
  10. python最大公约数计算_使用Python求解最大公约数的实现方法
  11. 吴恩达|机器学习作业6.0支持向量机(SVM)
  12. 靠播放业务吃不饱?音乐流媒体纷纷“加电商”卖周边
  13. Apache Hive 下载与安装
  14. UDS知识整理(二):UDS诊断服务简介
  15. PS换证件照底色,完美扣除头发丝并调整优化边缘
  16. 【技术教程】网盘扩容技术原理+爆盘免删修复原理解析!扩容爆盘如何免删修复?
  17. python如何用macd选股_使用MACD指标进行选股的四种方法
  18. 程序员很少上《非诚勿扰》电视节目相亲之分析
  19. 吴恩达机器学习笔记(自用)
  20. 微信开发者工具如何打开企业微信小程序

热门文章

  1. Python基础闯关失败总结
  2. 设计模式8(享元模式,解释器模式)
  3. 终端设备文件与进程之间的关系
  4. underscore.js 源码分析5 基础函数和each函数的使用
  5. Java 的布局管理器GridBagLayout的使用方法【图文说明】
  6. GridView控件 72变(一)
  7. C#进行Visio开发的事件处理
  8. 震惊!!!这才是代码!!
  9. 在Vid4上突破28dB大关!视频超分新的里程碑:IconVSR
  10. 内存占用少,计算速度快!华为诺亚方舟Lab开源即插即用的多用卷积核(NeurIPS 2018)...