文件上传返回存贮路径

/**
* 前端上传文件  返回存储路径
*
*/public static String fileUpload(HttpServletRequest request, HttpServletResponse response) throws FileUploadException, IOException{//文件路径String filepath = null;//文件名称String filename = null;response.setContentType("text/html;charset=utf-8");//创建DiskFileItemFactory工厂对象DiskFileItemFactory factory=new DiskFileItemFactory();//设置文件缓存目录,如果该文件夹不存在则创建一个File f=new File("E:\\TempFolder");if (!f.exists()){f.mkdirs();}factory.setRepository(f);//创建ServletFileUpload对象ServletFileUpload fileUpload=new ServletFileUpload(factory);//设置字符编码fileUpload.setHeaderEncoding("utf-8");// 解析request,将form表单的各个字段封装为FileItem对象List<FileItem> fileItems = fileUpload.parseRequest(request);//遍历List集合for (FileItem fileItem:fileItems) {//判断是否为普通字段if (fileItem.isFormField()){} else {//获取上传的文件名filename=fileItem.getName();//处理上传文件if(filename!=null&&filename!=""){//保持文件名唯一filename= UUID.randomUUID().toString()+"_"+filename;String webpath="/upload/";//创建文件路径//String filepath=getServletContext().getRealPath(webpath+filename);filepath = "E:/TempFolder"+webpath+filename;//创建File对象File file=new File(filepath);//创建文件夹file.getParentFile().mkdirs();//创建文件file.createNewFile();//获取上传文件流InputStream in=fileItem.getInputStream();//使用 FileOutputStream打开服务器端的上传文件FileOutputStream out=new FileOutputStream(file);//流byte[] bytes=new byte[1024];//每次读取一个字节int len;//开始读取上传文件的字节,并将其输出到服务器端的上传文件输出流中while ((len=in.read(bytes))>0) {out.write(bytes, 0, len);}in.close();out.close();fileItem.delete();}}}return filepath;}

解析表头不固定Excel 返回List集合

 因业务需求  每次上传表头顺序无法确定 ,没想到更好的方法
采用表头名称固定  遍历后  添加到集合中  和数据库字段对应  得到固定的顺序
  public static List<Map<String,String>> analysisExcel(String filepath) throws IOException{List<Map<String,String>> list = new ArrayList<Map<String,String>>();//String encoding = "GBK";File excel = new File(filepath);if (excel.isFile() && excel.exists()) {   //判断文件是否存在String[] split = excel.getName().split("\\.");  //.是特殊字符,需要转义!!!!!Workbook wb=null;//根据文件后缀(xls/xlsx)进行判断if ( "xls".equals(split[1])){FileInputStream fis = new FileInputStream(excel);   //文件流对象wb = new HSSFWorkbook(fis);}else if ("xlsx".equals(split[1])){FileInputStream fis = new FileInputStream(excel);  wb = new XSSFWorkbook(fis);}else {return null;}//开始解析Sheet sheet = wb.getSheetAt(0);     //读取sheet 0List<String> listBt = new ArrayList<String>();//获得表头 此处只遍历表头Row bt = sheet.getRow(0);if (bt != null) {int firstIndex = bt.getFirstCellNum();int lastIndex = bt.getLastCellNum();  for (int cellIndex = firstIndex; cellIndex < lastIndex; cellIndex++) {                      //遍历列String cell = bt.getCell(cellIndex).toString();//将表头遍历出  对应数据库中插入时对应的ID 得到对应的集合if(cell.equals("序号")){ listBt.add("ID");}}}int firstRowIndex = sheet.getFirstRowNum()+1;   //第一行是列名,所以不读int lastRowIndex = sheet.getLastRowNum();for(int rIndex = firstRowIndex; rIndex <= lastRowIndex; rIndex++) {   //遍历行Row row = sheet.getRow(rIndex);if (row != null) {int firstCellIndex = row.getFirstCellNum();int lastCellIndex = row.getLastCellNum();Map<String,String> map = new HashMap<String, String>();for (int cIndex = firstCellIndex; cIndex < lastCellIndex; cIndex++) {       //遍历列Cell cell = row.getCell(cIndex);String key = listBt.get(cIndex);map.put(key, cell.toString());}list.add(map);                }}} else {//找不到指定文件}return list;}

多sheet页解析

上传excel  用sheet页名称做数据库某一关键字段 ,将sheet页名称拼如集合中返回:
/*** * @param filepath Excel地址* @param field excel表头对应数据库字段 插入sheet页名称专用* @return* @throws IOException*/public static List<Map<String,String>> analysisExcel(String filepath,String[] field) throws IOException{List<Map<String,String>> list = new ArrayList<Map<String,String>>();//String encoding = "GBK";File excel = new File(filepath);if (excel.isFile() && excel.exists()) {   //判断文件是否存在String[] split = excel.getName().split("\\.");  //.是特殊字符,需要转义!!!!!Workbook wb=null;//根据文件后缀(xls/xlsx)进行判断if ( "xls".equals(split[1])){FileInputStream fis = new FileInputStream(excel);   //文件流对象wb = new HSSFWorkbook(fis);}else if ("xlsx".equals(split[1])){FileInputStream fis = new FileInputStream(excel);  wb = new XSSFWorkbook(fis);}else {return null;}int sheetCount = wb.getNumberOfSheets();for(int i = 0;i<sheetCount;i++){//开始解析Sheet sheet = wb.getSheetAt(i);     //读取sheet 0String sheetName = sheet.getSheetName();//sheet页名称int firstRowIndex = sheet.getFirstRowNum()+1;   //第一行是列名,所以不读int lastRowIndex = sheet.getLastRowNum();for(int rIndex = firstRowIndex; rIndex <= lastRowIndex; rIndex++) {   //遍历行Row row = sheet.getRow(rIndex);if (row != null) {int firstCellIndex = row.getFirstCellNum();int lastCellIndex = row.getLastCellNum();Map<String,String> map = new HashMap<String, String>();for (int cIndex = firstCellIndex; cIndex < lastCellIndex; cIndex++) {         //遍历列Cell cell = row.getCell(cIndex);map.put(field[cIndex], cell.toString());}map.put(field[lastCellIndex], sheetName);list.add(map);                }}}} else {//找不到指定文件}return list;}

java 文件上传Excel解析(表头不固定顺序,多sheet页)并插入数据库相关推荐

  1. java文件上传(MultipartFile)

    java文件上传(MultipartFile) java多文件上传_Java利用MultipartFile实现上传多份文件的代码 利用MultipartFile实现文件上传 Excel解析easyex ...

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

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

  3. Java文件上传大杀器-绕waf(针对commons-fileupload组件)

    Java文件上传大杀器-绕waf(针对commons-fileupload组件) Ps:高版本才有1.3以上 来个中二的标题,哈哈哈,灵感来源于昨晚赛博群有个师傅@我是killer发了篇新文章,在那篇 ...

  4. 2021-10-14 ContextType(MIME) 与 Java文件上传/下载

    ContextType(MIME) 与 Java文件上传/下载 ContextType(MIME) Text Image Audio Video Application Multipart 和 Mes ...

  5. java文件上传到云服务器,java文件上传到云服务器

    java文件上传到云服务器 内容精选 换一换 当用户拥有Linux操作系统的外部镜像文件,且类型及操作系统符合外部镜像文件格式和操作系统类型要求时,用户可以将外部镜像文件创建为Linux系统盘镜像. ...

  6. JAVA文件上传 ServletFileUpLoad 实例

    1.  jsp <%@ page language="java" contentType="text/html" pageEncoding="u ...

  7. JAVA文件上传详解(附源码)

    文章目录 JAVA文件上传详解(附源码) 1.准备工作 2.使用类介绍 FileItem类 ServletFileUpload类 3.代码编写 JAVA文件上传详解(附源码) 在web应用中,文件上传 ...

  8. java 文件上传 servlet_java文件上传-原始的Servlet方式

    前言: 干了这几个项目,也做过几次文件上传下载,要么是copy项目以前的代码,要么是百度的,虽然做出来了,但学习一下原理弄透彻还是很有必要的.刚出去转了一圈看周围有没有租房的,在北京出去找房子是心里感 ...

  9. JAVA 文件上传下载工具类

    JAVA 文件上传下载工具类 import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.FileUtils; import org. ...

最新文章

  1. cpu满了卡住 linux_Linux系统中CPU占用率较高问题排查思路与解决方法
  2. QCon上海2015 架构实战热点前瞻
  3. iOS RunLoop简介
  4. Simple File System
  5. 管道过滤器模式(Pipe and Filter)与组合模式(修改)
  6. Spring boot自动配置示例
  7. my current understanding of learning and graduate studies
  8. 计网 --- 域名服务系统:因特网的目录服务
  9. 笑看职场什么程序员才抢手,什么样的程序员涨薪多?
  10. oracle-关于分组函数的小细节
  11. 无法打开登录所请求的数据库 xxxx。登录失败。 用户 'NT AUTHORITY\SYSTEM' 登录失败。...
  12. UE5热更新(Pak包的Cook,打包,加载,踩过的一些坑)
  13. CF1153F Serval and Bonus Problem
  14. 如何使用JavaScript,纯前端实现字符、字数统计?
  15. 数据中心的功率密度将会得到进一步提高
  16. vs code 软件设置中文
  17. 计算机毕业设计(42)java小程序毕设作品之小说电子书阅读小程序系统
  18. 2010年考研英语一阅读A题翻译加解析
  19. IDEA 要自己主动装的插件(等我安新的了再更新)
  20. 超级签名-原理/机制/技术细节-完全解析

热门文章

  1. 大连计算机学院体育馆,【大科·数院】青春就要“赛”一场——大连科技学院“DK”战队荣获大连赛区冠军、全国八强...
  2. 厨房必备基本调料及作用
  3. 电机学习笔记 h桥与自举电路
  4. C语言课设心得之倒计时和暂停的实现
  5. redis一致性hash和hash槽
  6. oracle 分批提取数据,Oracle创建关系分批抽取测试数据
  7. online logo maker:在线制作具有专业水准的logo
  8. 用户收视率指标_时代的标志:电视现在具有网络收视率
  9. 计算机毕业设计Java峨眉山景点介绍及旅游攻略推荐平台(源码+系统+mysql数据库+lW文档)
  10. PPTV聚力传媒之Mesos集群性能测试