一:上传
方式一:通过request请求获取解析
1.web部分。
html:
<form>
<div class="form-group col-lg-2" th:if="${session.permissions.hotelAdd}">
<input id="fileUpload" accept="application/vnd.sealed-xls" type="file">
</div>
<form>
js:
//初始化文件上传
$('#fileUpload').fileinput({
uploadUrl: '/project/getFlieListHotExecl',
dropZoneEnabled: false,
allowedFileTypes: ['xls', 'xlsx'],
maxFileCount: 1,
maxFileSize:10240,
language: 'zh'
}).on("filebatchselected", function (event, files) {
$(this).fileinput("upload");
}).on("fileuploaded", function (event, data) {
$('#blogTable').bootstrapTable('refresh');
});
2:java部分。
@RequestMapping("/getFlieListHotExecl")
@ResponseBody
public void fileUpload(HttpServletRequest request) {
MultipartFile file = null;
// 创建一个通用的多部分解析器
CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext());
// 判断 request 是否有文件上传,即多部分请求
if (multipartResolver.isMultipart(request)) {
// 转换成多部分request
MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;
// 取得request中的所有文件名
Iterator<String> iter = multiRequest.getFileNames();
while (iter.hasNext()) {
file = multiRequest.getFile(iter.next());
}
}
//解析
if (null!=file){
// 创建输入流,读取流
try {
InputStream is = file.getInputStream();
//处理流
} catch (IOException e) {
e.printStackTrace();
}
}
}
方式二:spring boot 项目
1.web部分。
html:
<form action="fileUpload" method="post" enctype="multipart/form-data">
<p>选择文件: <input type="file" name="fileName"/></p>
<p><input type="submit" value="提交"/></p>
</form>
2.java部分。
@RequestMapping("/fileUpload")
@ResponseBody
public void fileUpload(@RequestParam("fileName") MultipartFile file){
//解析
if (null!=file){
// 创建输入流,读取流
try {
InputStream is = file.getInputStream();
//处理流
} catch (IOException e) {
e.printStackTrace();
}
}
}
三:上传多文件
htlm:
<form action="multifileUpload" method="post" enctype="multipart/form-data" >
<p>选择文件1: <input type="file" name="fileName"/></p>
<p>选择文件2: <input type="file" name="fileName"/></p>
<p>选择文件3: <input type="file" name="fileName"/></p>
<p><input type="submit" value="提交"/></p>
</form>
java:
@RequestMapping(value = "/batch/upload", method = RequestMethod.POST)
@ResponseBody
public void handleFileUpload(HttpServletRequest request) {
MultipartHttpServletRequest params=((MultipartHttpServletRequest) request);
List<MultipartFile> files = ((MultipartHttpServletRequest) request)
.getFiles("file");
String name=params.getParameter("name");
System.out.println("name:"+name);
String id=params.getParameter("id");
System.out.println("id:"+id);
MultipartFile file = null;
BufferedOutputStream stream = null;
for (int i = 0; i < files.size(); ++i) {
file = files.get(i);
//解析
}
}
二:解析
1.解析excel
public static List<T> getExeclObject(MultipartFile file,List<T> T) {
try {
// 创建输入流,读取Excel
InputStream is = file.getInputStream();
// jxl提供的Workbook类
Workbook wb = Workbook.getWorkbook(is);
// Excel的页签数量
int sheet_size = wb.getNumberOfSheets();
for (String str : wb.getSheetNames()) {
System.out.println("===========str==========" + str);
}
for (int index = 0; index < sheet_size; index++) {
// 获得页签名称
Sheet sheet = wb.getSheet(index);
for (int i = 1; i < sheet.getRows(); i++) {
T t = new T();
// 对t赋值
if (!StringUtil.isEmpty(sheet.getCell(0, i).getContents())) {
sheet.getCell(0, i).getContents();//第i行,第1列数据
sheet.getCell(1, i).getContents();//第i行,第2列数据
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
return T;
}