//国产PDF解析包,免费的 <!--引入PDF解析包 开始--> <repositories> <repository> <id>com.e-iceblue</id> <name>e-iceblue</name> <url>https://repo.e-iceblue.com/nexus/content/groups/public/</url> </repository> </repositories> <dependency> <groupId>e-iceblue</groupId> <artifactId>spire.pdf.free</artifactId> <version>3.9.0</version> </dependency> <!--引入PDF解析包 结束--> @RequestMapping("/invoiceUpload") public void invoiceUpload2(HttpServletRequest request){ JSONObject jsonObj = new JSONObject(); try { MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; multipartRequest.setCharacterEncoding("utf-8"); List<MultipartFile> mfs = multipartRequest.getFiles("invoiceUpload"); String filePath = env.getProperty("file.url"); //从yml文件获取上传路径 if (mfs.size() > 0) { for (MultipartFile btnFile : mfs) { String baseName = FilenameUtils.getBaseName(btnFile.getOriginalFilename()); byte[] baseBytes = ArrayUtils.addAll(btnFile.getBytes(), baseName.getBytes()); String md5Hex = DigestUtils.md5Hex(baseBytes); // 获取上传文件的路径 String uploadFilePath = btnFile.getOriginalFilename(); System.out.println("uploadFlePath:" + uploadFilePath); // 截取上传文件的文件名 String uploadFileName = uploadFilePath.substring(uploadFilePath.lastIndexOf('\\') + 1, uploadFilePath.lastIndexOf('.')); System.out.println("multiReq.getFile()" + uploadFileName); // 截取上传文件的后缀 String uploadFileSuffix = uploadFilePath.substring(uploadFilePath.lastIndexOf('.') + 1, uploadFilePath.length()); System.out.println("uploadFileSuffix:" + uploadFileSuffix); File fileTemp=null; File file = new File(filePath + File.separator + md5Hex); //判断是否存在这一个文件夹 if (!file.isDirectory()){ //不存在 则没有这个文件 fileTemp = new File(filePath + File.separator + md5Hex + File.separator + uploadFileName + "." + uploadFileSuffix); FileUtils.copyInputStreamToFile(btnFile.getInputStream(), fileTemp); //解析pdf,获取发票号码 String filePa = filePath + File.separator + md5Hex + File.separator + uploadFileName + "." + uploadFileSuffix; String invoiceNum = getName(filePa); List<InvoiceFile> invoiceFiles = invoiceFileService.findAll(); if (invoiceFiles.size()>0 && invoiceFiles!=null){ for (InvoiceFile invoiceFile:invoiceFiles){ if (invoiceFile.getFileId().equals(md5Hex) && invoiceFile.getFileNum().equals(invoiceNum)){ throw new RuntimeException("上传失败,数据库中已存在相同发票!!!请重新选择"); } } } File fileUrl = new File(filePath + File.separator + md5Hex + File.separator + invoiceNum + "." + uploadFileSuffix); //if (!fileTemp.exists()){ FileUtils.copyInputStreamToFile(btnFile.getInputStream(), fileUrl); //存储以发票号码为名称的PDF版 //} fileTemp.delete(); // FileUtils.forceDelete(fileTemp); //删除最开始存储的 System.out.println("发票名称==================="+filePath + File.separator + md5Hex + File.separator + invoiceNum + "." + uploadFileSuffix); InvoiceFile invoiceFile = new InvoiceFile(); invoiceFile.setFileId(md5Hex); invoiceFile.setFileName(uploadFileName); invoiceFile.setFileNum(invoiceNum); invoiceFile.setFileSize(fileUrl.length()); invoiceFile.setFileType(uploadFileSuffix); invoiceFile.setFileUrl(filePath + File.separator + md5Hex + File.separator); invoiceFile.setCreateTime(DateUtil.getDateTime()); invoiceFileService.saveOrUpdate(invoiceFile); jsonObj.put("code", "success"); jsonObj.put("msg", "获取成功"); }else { throw new RuntimeException("上传失败,数据库中已存在相同发票!!!请重新选择"); } } } }catch (Exception e){ e.printStackTrace(); jsonObj.put("code", "fail"); jsonObj.put("msg", "获取失败"); if (e instanceof RuntimeException) { jsonObj.put("msg", e.getMessage()); } } Response.json(jsonObj); }
07-30
04-15
535
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交