SpringBoot 上传文件(单个、多个文件)
说明
用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 上传文件(单个、多个文件)相关推荐
- springboot上传文件到阿里云
springboot上传文件到OSS 前提声明,文章借鉴了https://blog.csdn.net/wonder_dog/article/details/81152307#commentsedit博 ...
- springboot 上传文件解析入库_springboot实现文件上传步骤解析
这篇文章主要介绍了springboot实现文件上传步骤解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 第一步编写上传的前段页面 data-tar ...
- SpringBoot上传文件到 后端服务器 或 云服务器(七牛云、阿里云、腾讯云等等都是一样的操作步骤)
文章目录 一.新建SpringBoot项目 1.pom.xml 2.application.yml 3.配置Swagger3 4.统一返回类Result 5.统一异常响应ErrorCode 二.上传文 ...
- themyleaf 图片上传_javaEE --springboot #实现图片上传和回显 #单文件上传 #多文件上传 #ajax异步文件上传 (非常详细,从创建项目开始)...
实现文件上传和回显 1.新建一个SpringBoot项目,选择 Spring Web 和 thymeleaf 依赖 .pow.xml文件下的依赖如下 2.根据下图,创建如下文件 3.直接上代码 配置文 ...
- springboot 上传文件解析入库_SpringBoot + easyexcel + WebUploader 实现文件上传并解析
1. WebUploader的使用,引入css和js,css其实没什么用: 2. 定义上传框: 选择文件 开始上传 3.相关jquery: // 文件上传 jQuery(function() { va ...
- smb 限制大文件上传_单个文件大小 上传百度云盘 微信发送 有大小限制 怎么破?...
问题描述 百度云盘,单个文件20G,如果一个文件太大,就不能上传成功. 微信发送文件,单个文件100Mb,如果太大,就无法发送. QQ也有类似限制 如果解决呢??? 问题解决 使用rar文件压缩,或者 ...
- springboot上传文件过大,全局异常捕获,客户端没有返回值
springboot上传文件过大,全局异常捕获,客户端没有返回值 参考文章: (1)springboot上传文件过大,全局异常捕获,客户端没有返回值 (2)https://www.cnblogs.co ...
- springBoot上传文件时MultipartFile报空问题解决方法
springBoot上传文件时MultipartFile报空问题解决方法 参考文章: (1)springBoot上传文件时MultipartFile报空问题解决方法 (2)https://www.cn ...
- springboot上传下载文件(4)--上传下载工具类(已封装)
因为在做毕设,发现之前的搭建ftp文件服务器,通过ftp协议无法操作虚拟机临时文件,又因为ftp文件服务器搭建的比较麻烦:而 hadoop的HDFS虽然可以实现,但我这里用不到那么复杂的:所以我封装了 ...
- SpringBoot分片上传、断点续传、大文件极速秒传功能(典藏版)
SpringBoot分片上传.断点续传.大文件极速秒传功能,这篇都帮你搞定!(典藏版) Java研发军团 2023-02-03 21:00 文件上传是一个老生常谈的话题了,在文件相对比较小的情况下,可 ...
最新文章
- R语言广义线性模型Logistic回归模型列线图分析(nomogram)
- 我想问一下为什么会开3分钟系统自动会从新启动呢?
- JDBC第一篇之获得数据库连接
- 监控mysql的shell脚本_监控MySQL主从状态的shell脚本
- 在WCF中使用Flag Enumerations
- Windows10环境下使用Anaconda安装tensorflow环境及keras环境
- 本文主要总结关于mysql的优化(将会持续更新)
- Vagrant搭建可移动的PHP开发环境
- HTML期末学生大作业-乒乓球网页作业html+css+javascript
- python最大公约数计算_使用Python求解最大公约数的实现方法
- 吴恩达|机器学习作业6.0支持向量机(SVM)
- 靠播放业务吃不饱?音乐流媒体纷纷“加电商”卖周边
- Apache Hive 下载与安装
- UDS知识整理(二):UDS诊断服务简介
- PS换证件照底色,完美扣除头发丝并调整优化边缘
- 【技术教程】网盘扩容技术原理+爆盘免删修复原理解析!扩容爆盘如何免删修复?
- python如何用macd选股_使用MACD指标进行选股的四种方法
- 程序员很少上《非诚勿扰》电视节目相亲之分析
- 吴恩达机器学习笔记(自用)
- 微信开发者工具如何打开企业微信小程序