1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 【功能】:前台上传文件(txt xls xlsx csv pdf)五种格式的文件 后台java解析文

【功能】:前台上传文件(txt xls xlsx csv pdf)五种格式的文件 后台java解析文

时间:2019-09-22 05:23:40

相关推荐

【功能】:前台上传文件(txt xls xlsx csv pdf)五种格式的文件 后台java解析文

描述:前台html上传文件到后台解析文件。文件类型有txt,xls,xlsx,csv,pdf这五种类型,并且要判断文件内容是否为空,就是有文件,但是文件内容的字节为零。

首先先配置需要maven依赖。

pom.xml文件:

文件需要配置文件上传和解析文件的maven依赖

<!-- File upload --><dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.4</version></dependency><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.4</version></dependency><!-- 解析文件 --><dependency><groupId>dom4j</groupId><artifactId>dom4j</artifactId><version>1.6.1</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.16</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.16</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml-schemas</artifactId><version>3.16</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-scratchpad</artifactId><version>3.16</version></dependency><dependency><groupId>org.apache.xmlbeans</groupId><artifactId>xmlbeans</artifactId><version>2.3.0</version></dependency><dependency><groupId>net.sf.cssbox</groupId><artifactId>pdf2dom</artifactId><version>1.7</version></dependency><dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId><version>2.0.12</version></dependency><dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox-tools</artifactId><version>2.0.12</version></dependency><dependency><groupId>net.sourceforge.javacsv</groupId><artifactId>javacsv</artifactId><version>2.0</version></dependency><dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId><version>2.0.15</version></dependency><!-- /artifact/org.apache.pdfbox/fontbox --><dependency><groupId>org.apache.pdfbox</groupId><artifactId>fontbox</artifactId><version>2.0.15</version></dependency><!-- /artifact/org.apache.pdfbox/jempbox --><dependency><groupId>org.apache.pdfbox</groupId><artifactId>jempbox</artifactId><version>1.8.16</version></dependency><dependency><groupId>org.jxls</groupId><artifactId>jxls-jexcel</artifactId><version>1.0.6</version></dependency>

mvc-dispatcher-servlet.xml文件:

需要加上<beans:property name="maxInMemorySize" value="0"></beans:property> 否则上传文件会报空指针错误。

<!-- 文件上传 --><beans:bean id="multipartResolver"class="org.springframework.monsMultipartResolver"><!-- 设定默认编码 --><beans:property name="defaultEncoding" value="UTF-8"></beans:property><!-- 设定文件上传的最大值5MB,5*1024*1024 --><beans:property name="maxUploadSize" value="52428800"></beans:property><beans:property name="maxInMemorySize" value="0"></beans:property></beans:bean>

html:

设置一个隐藏的文件上传,另一个按钮点击的时候触发隐藏的文件上传功能。并且把文件的名字显示在文本框里。

<input type="text" class="search-input-style" id="filetext" readonly="true"><input type="file" style="display:none;" id="NEWFILE" onchange="opt(this)" name="file"><input type="button" class="btn-main002 search-marginleft3per" onclick="newfile()" value="選択"/><input type="button" id="btn_fileExec" value="プロファイル実行" class="btn-main001" onclick="implement('implement')" tabindex="6">

JS:

点击按钮触发隐藏的文件上传

function newfile(){document.getElementById("NEWFILE").click(); }

把文件的名字显示在文本框里面

function opt(){var file = document.getElementById("NEWFILE").files[0]; var ff = document.getElementById("NEWFILE").files[0].name;$('#filetext').val(ff);}

点击プロファイル実行把文件传给后台

function implement(modeAction){checkall();var drop1 =$("input[name='checked']:checked").val();var file = document.getElementById("NEWFILE").files[0]; if(drop1!=null){dropped(drop1);} nosame();if(file!=null && (obj.nosamesign=="1")){eliminate();}if((obj.checkallsign=="1") && (obj.droppedsign=="1" || obj.droppedsign=="3") && (obj.nosamesign=="1") && (obj.eliminatesign=="1" || obj.eliminatesign=="3") && (obj.nonexistent=="1" || obj.nonexistent=="3") ){if(modeAction == 'implement'){$('#modeAction').val(modeAction);var form = document.getElementById('DRET004Form');form.submit();}}else{return false;}}function eliminate(){var file = document.getElementById("NEWFILE").files[0]; var formData=new FormData();formData.append("file",file); $.ajax({url: "/piosys/DRET004ELIMINATE",dataType:"json", type: "POST",data: formData,async: false,enctype: 'multipart/form-data',cache: false, processData: false, contentType: false,success: function (data) {if(data=="0"){obj.eliminatesign="0";obj.nonexistent="0";alert("文件不存在");}else if(data=="2"){obj.eliminatesign="1";obj.nonexistent="0";alert("指定的文件为0字节");}else{obj.eliminatesign="1";obj.nonexistent="1";} },error:function (data) {obj.eliminatesign="0";alert("文件不存在");}}); }

controller:

判断文件是否为空,文件内容是否为零字节

//检查用户简档的文件是否存在,并且检查文件内容是否为空@ResponseBody()@RequestMapping("/DRET004ELIMINATE")public String elimate(MultipartFile multipartFile,HttpServletRequest request,HttpServletResponse response) throws IOException{//把requesr转化成MultipartHttpServletRequestMultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest)request;//获取前端传的文件MultipartFile file = multiRequest.getFile("file");//获取文件名字String filename = file.getOriginalFilename();//获取后缀名String suffix = filename.substring(filename.lastIndexOf(".") + 1);//把MultipartFile转化成FileCommonsMultipartFile cf= (CommonsMultipartFile)file; DiskFileItem fi =(DiskFileItem)cf.getFileItem(); File f = fi.getStoreLocation();//0表示文件不存在 ,1表示文件存在并且文件不为空,2表示文件存在但是文件为空String files = null;if(file==null) {files="0";return files;}else {if(suffix.equals("txt")) {if(file.isEmpty()){files="2";return files;}else {files="1";return files;}}else if (suffix.equals("xls") || suffix.equals("xlsx")) {InputStream is = new FileInputStream(f); if(suffix.equals("xls")) {HSSFWorkbook wb = new HSSFWorkbook(is);for(int sheetIndex=0;sheetIndex<wb.getNumberOfSheets();sheetIndex++){HSSFSheet st = wb.getSheetAt(sheetIndex);if(st==null){files="2";return files;}for(int rowIndex =0;rowIndex<=st.getLastRowNum();rowIndex++){HSSFRow row = st.getRow(rowIndex);if(row==null){files="2";return files;}else {files="1";return files;}}}is.close();}else {XSSFWorkbook wb = new XSSFWorkbook(is);for(int sheetIndex=0;sheetIndex<wb.getNumberOfSheets();sheetIndex++){XSSFSheet st = wb.getSheetAt(sheetIndex);if(st==null){files="2";return files;}for(int rowIndex =0;rowIndex<=st.getLastRowNum();rowIndex++){XSSFRow row = st.getRow(rowIndex);if(row==null){files="2";return files;}else {files="1";return files;}}}is.close();}}else if (suffix.equals("csv")) {CsvReader csvReader = new CsvReader(new FileInputStream(f), ',', Charset.forName("UTF-8"));if (csvReader.readRecord()){files="1";return files;}else{files="2";return files;}}else if (suffix.equals("pdf")) {FileInputStream in = new FileInputStream(f);PDFParser parser = new PDFParser(new RandomAccessFile(f,"rw"));parser.parse();PDDocument pdfdocument = parser.getPDDocument();PDFTextStripper stripper = new PDFTextStripper();String result = stripper.getText(pdfdocument);String newresult = result.replaceAll("\t|\r|\n","");String newresult1 = newresult.trim();in.close();if(newresult1==null || newresult1=="" || newresult1.isEmpty() || "".equals(newresult1)){files="2";return files;}else {System.out.println(stripper.getText(pdfdocument));files="1";return files;}}else {files="0";return files;}}return files;}

controller:

解析文件

@RequestMapping(value="/DRET004UPLOAD")public String dreg004uoload(DRET004Form form, /* MultipartFile multipartFiles, */HttpServletRequest request) throws IOException, BiffException {//方法区分String modeAction = form.getModeAction();//单选按钮的idString checked = form.getChecked();MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest)request;MultipartFile file = multiRequest.getFile("file");String filename = file.getOriginalFilename();String suffix = filename.substring(filename.lastIndexOf(".") + 1);CommonsMultipartFile cf= (CommonsMultipartFile)file; DiskFileItem fi =(DiskFileItem)cf.getFileItem(); File f = fi.getStoreLocation();//统计数量int linenumber = 0;if(file!=null){if(suffix.equals("txt")){//读取文件所有内容InputStreamReader read = new InputStreamReader(new FileInputStream(f),"UTF-8");BufferedReader bufferedReader = new BufferedReader(read);String lineTxt = "";String AlartTxt="";while((lineTxt = bufferedReader.readLine()) != null){lineTxt+='\n';AlartTxt+=lineTxt;}System.out.println(AlartTxt);read.close();//读取行数统计数量FileReader fr = new FileReader(f);LineNumberReader lnr = new LineNumberReader(fr);while (lnr.readLine() != null){linenumber++;}System.out.println(linenumber-3);lnr.close();}else if(suffix.equals("xlsx") || suffix.equals("xls")){/* BufferedInputStream in = new BufferedInputStream(new FileInputStream(f)); */ InputStream is = new FileInputStream(f); /* POIFSFileSystem fs = new POIFSFileSystem(in); */if(suffix.equals("xlsx")){XSSFWorkbook wb = new XSSFWorkbook(is);for(int sheetIndex=0;sheetIndex<wb.getNumberOfSheets();sheetIndex++){XSSFSheet st = wb.getSheetAt(sheetIndex);if(st==null){break;}for(int rowIndex =0;rowIndex<=st.getLastRowNum();rowIndex++){XSSFRow row = st.getRow(rowIndex);if(row==null){break;}int firstCellIndex = row.getFirstCellNum();int lastCellIndex = row.getLastCellNum();for(int cIndex = firstCellIndex; cIndex < lastCellIndex; cIndex++){Cell cell = row.getCell(cIndex);if (cell != null) {System.out.print(cell.toString());}}System.out.println();}}Sheet sheet = wb.getSheetAt(0); int begin = sheet.getFirstRowNum(); int end = sheet.getLastRowNum(); linenumber =end-begin;System.out.println(linenumber);is.close();}else {HSSFWorkbook wb = new HSSFWorkbook(is); for(int sheetIndex=0;sheetIndex<wb.getNumberOfSheets();sheetIndex++){HSSFSheet st = wb.getSheetAt(sheetIndex);if(st==null){break;}for(int rowIndex =0;rowIndex<=st.getLastRowNum();rowIndex++){HSSFRow row = st.getRow(rowIndex);if(row==null){break;}int firstCellIndex = row.getFirstCellNum();int lastCellIndex = row.getLastCellNum();for(int cIndex = firstCellIndex; cIndex < lastCellIndex; cIndex++){Cell cell = row.getCell(cIndex);if (cell != null) {System.out.print(cell.toString());}}System.out.println();}}Sheet sheet = wb.getSheetAt(0); int begin = sheet.getFirstRowNum(); int end = sheet.getLastRowNum(); linenumber =end-begin;System.out.println(linenumber);is.close();/* XSSFWorkbook wb = new XSSFWorkbook(fs); */}}else if(suffix.equals("csv")){CsvReader csvReader = new CsvReader(new FileInputStream(f), ',', Charset.forName("UTF-8"));/* csvReader.readHeaders(); */while (csvReader.readRecord()){for (int i = 0; i <= csvReader.getColumnCount(); i++) { String aa=csvReader.get(i); System.out.println(aa); } /* System.out.print(csvReader.get(0)); */}}else if(suffix.equals("pdf")){FileInputStream in = new FileInputStream(f);PDFParser parser = new PDFParser(new RandomAccessFile(f,"rw"));parser.parse();PDDocument pdfdocument = parser.getPDDocument();PDFTextStripper stripper = new PDFTextStripper();String result = stripper.getText(pdfdocument);in.close();System.out.println(result);}else {System.out.println("啥也不是");}}else {System.out.println("无文件");}return "DRET011";}}

【功能】:前台上传文件(txt xls xlsx csv pdf)五种格式的文件 后台java解析文件 并且判断文件内容是否为零字节

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。