spring boot file上传
用Spring Boot写读取Excel文件小工具的时候遇到的一些小坑已经填平,复制即可满足普通的文件上传功能
POI方面只需一个包,其他通用包工程中一般都会带
TIPS:前端为了扩展我用ajax异步请求,表单提交也支持,form表单enctype="multipart/form-data"始终需要
注:不要导入多余的 MultipartFile 相关配置,spring boot已自带文件上传功能
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.9</version>
</dependency>
package sz.tools.controller; import com.alibaba.fastjson.JSON;
import org.apache.commons.lang.StringUtils;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.util.Assert;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest;
import java.io.*;import java.util.Iterator;/**
* 组合商品产品小工具
*
* @author LiuZhibo
* @date 2018年7月21日15:17:13
*/
@RestController
public class CombinationController { @RequestMapping("/combination")
public String combination(HttpServletRequest request, @RequestParam("file") MultipartFile file) throws IOException { Assert.isTrue(file != null, "file is null");
Assert.isTrue(file.getSize() > 0, "file is null"); File f = null;
InputStream ins = file.getInputStream();
f = new File(file.getOriginalFilename());
inputStreamToFile(ins, f); Assert.isTrue(f != null, "file is null");
Assert.isTrue(f.length() > 0, "file is null"); FileInputStream fileInputStream = new FileInputStream(f); Workbook workbook = getWorkbook(f.getName(), fileInputStream); fileInputStream.close();
Sheet sheet = workbook.getSheetAt(0); // 获取到第一个sheet
Iterator<Row> iterator = sheet.rowIterator();
if (iterator.hasNext()) {
iterator.next(); // 跳过第一列
} while (iterator.hasNext()) {
try {
Row row = iterator.next();
Cell baseCell = row.getCell(1);
} catch (Exception e) {
e.printStackTrace();
break;
}
}
return null;
} private static Workbook getWorkbook(String fileName, FileInputStream fileInputStream) throws IOException {
Workbook workbook;
String extString = fileName.substring(fileName.lastIndexOf("."));
if (".xls".equals(extString)) {
workbook = new HSSFWorkbook(fileInputStream);
} else if (".xlsx".equals(extString)) {
workbook = new XSSFWorkbook(fileInputStream);
} else {
workbook = null;
}
return workbook;
} public static void inputStreamToFile(InputStream ins, File file) {
try {
OutputStream os = new FileOutputStream(file);
int bytesRead = 0;
byte[] buffer = new byte[8192];
while ((bytesRead = ins.read(buffer, 0, 8192)) != -1) {
os.write(buffer, 0, bytesRead);
}
os.close();
ins.close();
} catch (Exception e) {
e.printStackTrace();
}
} }
--------------------------------------以下为HTML部分--------------------------------------------------------------
<html>
<head>
<title>Title</title>
</head>
<body>
<form id="fileForm" action="combination" enctype="multipart/form-data">
<input type="file" name="file" value="上传Excel"/>
<a href="javascript:;" id="submit">提交</a>
</form>
<div id="showContent"></div>
</body>
<script type="text/javascript" src="//cdn.bootcss.com/jquery/1.11.3/jquery.min.js"></script> <script type="text/javascript">
$("#submit").click(function () {
var formData = new FormData(document.getElementById("fileForm"));//表单id
$.ajax({
type:"post",
data:formData,
url: "combination",
processData:false,
contentType:false,
success:function(data){
$("#showContent").html("");
var json = JSON.parse(data);
$.each(json, function(idx, obj) {
$("#showContent").append(obj + "<br/>")
});
alert("请求成功!");
},
error:function(e){
alert("错误!!");
console.log(data);
}
});
});
</script>
</html>
spring boot file上传的更多相关文章
- Spring Boot 文件上传原理
首先我们要知道什么是Spring Boot,这里简单说一下,Spring Boot可以看作是一个框架中的框架--->集成了各种框架,像security.jpa.data.cloud等等,它无须关 ...
- spring boot文件上传、下载
主题:Spring boot 文件上传(多文件上传)[从零开始学Spring Boot]http://www.iteye.com/topic/1143595 Spring MVC实现文件下载http: ...
- Spring框架学习笔记(7)——Spring Boot 实现上传和下载
最近忙着都没时间写博客了,做了个项目,实现了下载功能,没用到上传,写这篇文章也是顺便参考学习了如何实现上传,上传和下载做一篇笔记吧 下载 主要有下面的两种方式: 通过ResponseEntity实现 ...
- Spring Boot:上传文件大小超限制如何捕获 MaxUploadSizeExceededException 异常
Spring Boot 默认上传文件大小限制是 1MB,默认单次请求大小是 10MB,超出大小会跑出 MaxUploadSizeExceededException 异常 spring.servlet. ...
- spring boot(十七)上传文件
上传文件是互联网中常常应用的场景之一,最典型的情况就是上传头像等,今天就带着带着大家做一个Spring Boot上传文件的小案例. 1.pom包配置 我们使用Spring Boot最新版本1.5.9. ...
- 使用Spring boot + jQuery上传文件(kotlin)
文件上传也是常见的功能,趁着周末,用Spring boot来实现一遍. 前端部分 前端使用jQuery,这部分并不复杂,jQuery可以读取表单内的文件,这里可以通过formdata对象来组装键值对, ...
- Spring Boot 文件上传
其实网上已经有很多这样的文章了.为什么我还要记录一下呢?原因是在工作中对接外系统时,碰到了他们调取我们文件上传接口确存在着http请求头部规范的情况,从而导致用传统方法获取不到参数.今天就来整理下Sp ...
- spring boot 文件上传大小限制
错误信息 : Spring Boot:The field file exceeds its maximum permitted size of 1048576 bytes. 解决方法一:在启动类添加如 ...
- 从.Net到Java学习第十篇——Spring Boot文件上传和下载
从.Net到Java学习系列目录 图片上传 Spring Boot中的文件上传就是Spring MVC中的文件上传,将其集成进来了. 在模板目录创建一个新的页面 profile/uploadPage. ...
随机推荐
- HttpWebRequest 以及WebRequest的使用
1.WebRequest的发送数据以及接收数据 class Program { static void Main(string[] args) { //创建一个实例并发送请求 HttpWebReque ...
- Windows bat 设置代理
转自tt-0411 @echo off cls color 0A Echo The program is running... Echo Setting the ip and dns... netsh ...
- 在Swift中定义属于自己的运算符
precedencegroup ChainingPrecedence { associativity: left higherThan: TernaryPrecedence } infix opera ...
- 使用Let's Encrypt 生成免费的ssl证书的详细过程
参考连接:https://github.com/diafygi/acme-tiny 中文:https://hacpai.com/article/1487899289204 目前我了解可以生成免费证书的 ...
- D2. Toy Train
D2. Toy Train time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...
- vue多视图
第一步 在app.vue中 <router-view class="b" name="header"> </router-view> ...
- MySQL主主配置及并行复制搭建
思路: 两台机器互为主从. 机器1:192.168.1.160 机器2:192.168.1.164 修改两台机器的my.cnf文件,server-id,log-bin,auto-increment-i ...
- JS实现标签页切换效果
本文实例为大家分享了JS标签页切换的具体代码,供大家参考,具体内容如下 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 ...
- tomcat时间与系统时间不一致问题
我在部署应用到centos系统上的tomcat服务器中运行,发现操作系统的时间和tomcat中的访问日志的时间与系统时间不一致,但是查看当前操作系统的时区也是CST时区(中国标准时区). 查看系统的时 ...
- mysql数据库导出导入
MYSQL的命令行模式设置: 我的电脑->属性->高级系统设置->环境变量->系统变量-> 选择Path,在后面添加“;path\mysql\bin;”其中path为MY ...