
Spring MVC为文件上传提供了直接的支持,这种支持是通过即插即用的MultipartResolver实现的。Spring使用Jakarta Commons FileUpload 技术实现了一个MultipartResolver实现类:CommonsMultipartResolver。
Spring MVC上下文中默认没有装配MultipartResolver,因此默认情况下不能处理文件的上传工作。如果想要使用Spring的文件上传功能,需要先在上下文中配置MultipartResolver。
第一步:配置MultipartResolver
使用CommonsMultipartResolver配置一个MultipartResolver解析器:
<bean id="multipartResolver" class="orgspringframeworkwebmultipartcommonsCommonsMultipartResolver"
p:defaultEncoding="UTF-8"
p:maxUploadSize="5242880"
p:uploadTempDir="/upload/temp"
/>
defaultEncoding必须和用户JSP的pageEncoding属性一致,以便正确读取表单的内容。uploadTempDir是文件上传过程所使用的临时目录,文件上传完成后,临时目录中的临时文件会被自动清除。
第二步:编写文件上传表单页面和控制器
JSP页面如下:
<%@ page language="java" import="javautil" pageEncoding="utf-8"%>
<%
String path = requestgetContextPath();
String basePath = requestgetScheme()+"://"+requestgetServerName()+":"+requestgetServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 401 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'indexjsp' starting page</title>
<meta >
EasyExcel是阿里巴巴开源poi插件之一,主要解决了poi框架使用复杂,sax解析模式不容易 *** 作,数据量大起来容易OOM,解决了POI并发造成的报错。
主要解决方式:通过解压文件的方式加载,一行一行的加载,并且抛弃样式字体等不重要的数据,降低内存的占用。
EasyExcel优势
注解式自定义 *** 作。
输入输出简单,提供输入输出过程的接口
支持一定程度的单元格合并等灵活化 *** 作
二、常用注解
@ExcelProperty
指定当前字段对应excel中的哪一列。可以根据名字或者Index去匹配。当然也可以不写,默认第一个字段就是index=0,以此类推。千万注意,要么全部不写,要么全部用index,要么全部用名字去匹配。千万别三个混着用,除非你非常了解源代码中三个混着用怎么去排序的。如果您正在学习Spring Boot,推荐一个连载多年还在继续更新的免费教程:>
@ExcelIgnore
默认所有字段都会和excel去匹配,加了这个注解会忽略该字段
@DateTimeFormat
日期转换,用String去接收excel日期格式的数据会调用这个注解。里面的value参照javatextSimpleDateFormat
@NumberFormat
数字转换,用String去接收excel数字格式的数据会调用这个注解。里面的value参照javatextDecimalFormat
@ExcelIgnoreUnannotated
默认不加ExcelProperty 的注解的都会参与读写,加了不会参与
三、 comalibaba easyexcel 214 javaxservlet javaxservlet-api 401 provided comalibaba fastjson 1247四、监听 / EasyExcel 导入监听 /public class ExcelListener extends AnalysisEventListener { //可以通过实例获取该值 private List datas = new ArrayList(); @Override public void invoke(Object o, AnalysisContext analysisContext) { datasadd(o);//数据存储到list,供批量处理,或后续自己业务逻辑处理。 doSomething(o);//根据自己业务做处理 } private void doSomething(Object object) { //1、入库调用接口 } public List getDatas() { return datas; } public void setDatas(List datas) { thisdatas = datas; } @Override public void doAfterAllAnalysed(AnalysisContext analysisContext) { // datasclear();//解析结束销毁不用的资源 }}五、接口导入Exceltry { //获取文件名 String filename = filegetOriginalFilename(); //获取文件流 InputStream inputStream = filegetInputStream(); //实例化实现了AnalysisEventListener接口的类 ExcelListener listener = new ExcelListener(); //传入参数 ExcelReader excelReader = new ExcelReader(inputStream, ExcelTypeEnumXLS, null, listener); //读取信息 excelReaderread(new Sheet(1, 0, Testclass)); //获取数据 List list = listenergetDatas(); if (listsize() > 1) { for (int i = 0; i < listsize(); i++) { Testobj = (Test) listget(i); JSONObject jo = new JSONObject(); } } } catch (Exception e) { Systemoutprintln(egetMessage()); }、接口导出Excel
>
try { String filenames = "111111"; String userAgent = requestgetHeader("User-Agent"); if (userAgentcontains("MSIE") || userAgentcontains("Trident")) { filenames = URLEncoderencode(filenames, "UTF-8"); } else { filenames = new String(filenamesgetBytes("UTF-8"), "ISO-8859-1"); } responsesetContentType("application/vndms-exce"); responsesetCharacterEncoding("utf-8"); responseaddHeader("Content-Disposition", "filename=" + filenames + "xlsx"); EasyExcelwrite(responsegetOutputStream(), Testclass)sheet("sheet")doWrite(testList);} catch (Exception e) {}另外,如果您正在学习Spring Cloud,推荐一个连载多年还在继续更新的免费教程:>
以上就是EasyExcel的基础使用过程,欢迎点赞关注交流。
来源 | >
更多好文
万字长文带你学习ElasticSearch
try {
//下面这句必须加,不然报错
MultipartResolver resolver = new CommonsMultipartResolver(requestgetSession()getServletContext());
Multipart>
工作中用到的导入excel一个方法,你还可以通过一些插件导入,代码要你自己了,基本原理如下
public Object importDoucument(MultipartFile uploadfile)
{
StringBuffer resultMessage = new StringBuffer();
ExcelImport excelImport = new ExcelImport();
Sheet sheet = null;
try
{
// 验证文件格式 如不出错 返回工作簿
excelImportverifyExeclFile(uploadfile);
ExcelBean excelBean = excelImportgetExcelBean();
if (null != excelBean)
{
sheet = excelBeangetSheet();
}
//导入excel文件分析整理出list对象
List<StcCoreElements> dataList = getAssessCateRange(sheet, "战略要素名称", "战略要素名称", 2, 1);
int num = 0;
if(dataListsize()>0){
for (StcCoreElements itemStcVO : dataList)
{
StcCoreElements stcCoreElementsVo = nitemStcVO
//修改些处
thissave(stcCoreElementsVo);
++num;
}
}
resultMessageappend("已成功导入 "+num+" 条核心要素信息");
}
catch (Exception e)
{
resultMessageappend(egetMessage());
eprintStackTrace();
}
finally
{
excelImportclose();
}
return resultMessage;
}
private List<StcCoreElements> getAssessCateRange(Sheet sheet, String startName, String endName, int rowNum, int titleRowNum)
{
int[] cateRange = new int[2];
List<StcCoreElements> dataList = new ArrayList<StcCoreElements>();
int lastRowNumber = sheetgetLastRowNum();
Row cateRow = sheetgetRow(rowNum - 1);
Cell cateCell = cateRowgetCell(0);
String cateCellValue = ImportExcelUtilgetCellValue(cateCell, sheet);
if (StringUtilsisNotBlank(cateCellValue))
{
if (StringUtilsstartsWith(cateCellValue, startName))
{
cateRange[0] = rowNum + titleRowNum;
}
}
String currentCellValue0 = "";
do
{
Row currentRow = sheetgetRow(rowNum);
StcCoreElements info =new StcCoreElements();
Cell currentCell0 = currentRowgetCell(0);
currentCellValue0 = ImportExcelUtilgetCellValue(currentCell0, sheet);
infosetOverallPlan(currentCellValue0);
dataListadd(info);
rowNum++;
} while (rowNum <= lastRowNumber);
return dataList;
}
参考文章:
>
以上就是关于springmvc 怎么将文件上传到linux服务器全部的内容,包括:springmvc 怎么将文件上传到linux服务器、EasyExcel 如何导出下图这样格式的数据、关于使用Springmvc的MultipartHttpServletRequest来获得表单上传文件的问题,万分感谢~等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)