Springboot上传文件到后台解析

@RequestMapping(value = "/addDeviceReport", method = RequestMethod.POST, headers = "content-type=multipart/form-data")
    public ApiResultVo<String> addDeviceReport(@RequestParam(value = "file", required = true) MultipartFile file, HttpServletRequest request) {
        //获取原文件名
        String name=file.getOriginalFilename();
        System.out.println("name = " + name);
        //获取文件后缀
        String subffix=name.substring(name.lastIndexOf(".")+1,name.length());
        //控制格式
        if(subffix.equals("")||(!subffix.equals("json")&&!subffix.equals("txt"))) {
            return ApiResultVo.error("文件格式不对");
        }
        int reCode = deviceReportService.addDeviceReport(file,request);
        if (Constant.UPDATE_CODE == reCode){
            return ApiResultVo.ok("SUCCESS");
        }else {
            return ApiResultVo.error("Failed!");
        }
    }

代码如上   要注意 设置method为post方式  校验格式正确以后   进行文件的转存

 @Override
    public int addDeviceReport(MultipartFile file, HttpServletRequest request) {
        //新的文件名以日期命名
        String fileName=new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());
        System.out.println("fileName = " + fileName);
        log.info("fileName = " + fileName);
        //获取项目路径到webapp
        String filepath=request.getServletContext().getRealPath("/")+"files\\";
        log.info("filepath = " + filepath);
        System.out.println("filepath = " + filepath);
        File fileFloder=new File(filepath);
        //文件夹不存在就创建
        if(!fileFloder.exists()) {
            fileFloder.mkdirs();
        }
        //保存临时文件
        File targetFile=new File(filepath,fileName);
        try{
            file.transferTo(targetFile);
            FileInputStream fileInputStream=new FileInputStream(targetFile);
            String secretKey = IOUtils.toString(fileInputStream);
            System.out.println("secretKey = " + secretKey);
            log.info("secretKey = " + secretKey);
            try{
                JSONObject jo= JSONObject.parseObject(secretKey);
                DeviceReport deviceReport = JSON.parseObject(secretKey,DeviceReport.class);
                DeviceReport report = getDeviceReport(deviceReport);
                if (null != report){
                    return 0;
                }
                return deviceReportMapper.insert(deviceReport);
            }catch (Exception e){
                fileInputStream.close();
                targetFile.delete();

            }
            //删除文件前关闭流,否则无法删除
            fileInputStream.close();
            targetFile.delete();
        }catch (Exception e){
            targetFile.deleteOnExit();
            e.printStackTrace();
        }
        return 0;
    }

注意获取文件路径   应该用服务器部署路径为准  否则会报错  No such file or directory

### 回答1: 在SpringBoot上上Excel文件解析,需要使用POI库。您可以在控制器中定义一个处理multipart/form-data类型的POST请求的方法。使用MultipartFile对象接收上的Excel文件,并使用POI库读取和解析文件。然后您可以将解析的数据存储到数据库或将其返回到前端。 ### 回答2: Spring Boot是一个Java框架, 它能够帮助我们快速构建基于Spring的应用程序。当我们需要在Web应用程序中上解析Excel文件时,Spring Boot提供了一些默认的库和一些自定义组件,来实现该过程。以下是一个简单的步骤,演示如何使用Spring Boot上Excel文件解析它。 1. 配置pom.xml文件 在pom.xml文件中添加以下依赖: ``` <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.0.1</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>4.0.1</version> </dependency> ``` 这些依赖提供了Spring Boot和Apache POI(Java类库,用于处理Microsoft文件格式,如Excel、Word、PowerPoint等),以便我们能够在应用程序中上解析Excel文件。 2. 创建控制器类 我们需要在程序中创建一个控制器类,以便处理文件解析请求。 在此示例中,我们可以使用以下代码创建控制器类: ``` @RestController @RequestMapping("/api") public class UploadExcelController { @PostMapping("/upload") public ResponseEntity<?> uploadExcel(@RequestParam("file") MultipartFile file) throws IOException { // Read Excel file Workbook workbook = WorkbookFactory.create(file.getInputStream()); Sheet sheet = workbook.getSheetAt(0); // Process data for (Row row : sheet) { for (Cell cell : row) { System.out.print(cell.toString() + "\t"); } System.out.println(); } // Return success response return ResponseEntity.ok("File uploaded and data processed successfully!"); } } ``` 上述代码为我们创建了一个RestController,用于处理文件解析请求。我们使用了 @RequestParam("file")来指定上传文件的参数名,然后使用MultipartFile类型的file参数来接收该文件。我们还使用了WorkbookFactory.create()方法,将文件输入流转换为Workbook对象以便我们可以解析它。 我们使用sheet.getSheetAt(0)方法获取第一个工作表,然后使用两个 for 循环遍历行和列,用于处理Excel数据。请注意,在实际应用中,您可以根据需要来进行更改以及添加必要的逻辑(例如,将解析的Excel数据写入到数据库中等等)。 最后我们使用 ResponseEntity.ok() 方法向客户端发送成功响应。 3. 创建并运行应用程序 我们可以使用Spring Boot CLI在命令行中创建并运行Spring Boot应用程序。为了运行Spring Boot应用程序,请在命令行中输入以下命令: ``` spring run app.groovy ``` 这将启动应用程序。我们也可以使用集成的开发环境(IDE)来创建和运行应用程序。为此,请创建一个新的Spring Boot项目,将上述代码添加到控制器类中,并使用以下命令启动应用程序: ``` mvn spring-boot:run ``` 注意:此示例代码中的路径和方法名仅供参考。在实际应用中,您需要根据您的实际要求进行更改。 总结 Spring Boot提供了一些非常方便的方式,来实现上解析Excel文件的功能。我们可以使用Spring Boot集成了Apache POI库来处理Excel文件,从而使我们的代码更加简洁和易于维护。此外,使用Spring Boot,我们可以轻松地创建RESTful Web服务,通过这种方式来实现文件解析。这让我们能够快速构建可以处理各种类型文件的web应用程序。 ### 回答3: Spring Boot提供了简单且强大的方式来上Excel文件解析。Excel文件通常用于前端与后端之间的数据交互,如批量导入数据或导出报表。以下是如何使用Spring Boot上Excel文件解析的步骤: 1.添加依赖 添加以下依赖来处理Excel文件解析: ``` <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.1.2</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>4.1.2</version> </dependency> ``` 2.创建上传文件控制器 创建一个控制器来处理Excel文件。在Spring Boot中,可以使用`@PostMapping`来处理`multipart/form-data`的POST请求来上传文件。以下代码演示了如何处理上的Excel文件: ``` @PostMapping("/upload") public ModelAndView uploadExcelFile(@RequestParam("file") MultipartFile file) { // Check if file is empty if (file.isEmpty()) { ModelAndView mav = new ModelAndView("uploadForm"); mav.addObject("message", "Please select a file to upload"); return mav; } try { // Load Excel file to workbook object XSSFWorkbook workbook = new XSSFWorkbook(file.getInputStream()); // Get sheet at index 0 XSSFSheet sheet = workbook.getSheetAt(0); // Iterate over rows for (Row row : sheet) { // Iterate over cells for (Cell cell : row) { // Print cell value System.out.print(cell.getStringCellValue() + "\t"); } System.out.println(""); } ModelAndView mav = new ModelAndView("uploadForm"); mav.addObject("message", "File uploaded successfully"); return mav; } catch (IOException e) { e.printStackTrace(); ModelAndView mav = new ModelAndView("uploadForm"); mav.addObject("message", "Error uploading file"); return mav; } } ``` 3.创建上传文件表单 创建一个包含文件控制器URL的HTML表单: ``` <form method="post" action="/upload" enctype="multipart/form-data"> <input type="file" name="file"> <input type="submit" value="Upload"> </form> ``` 4.测试文件解析 运行应用程序并访问表单页面,选择要上的Excel文件并单击“上”按钮,应该会看到控制台打印出Excel文件的内容,并且页面应显示上成功消息。如果Excel文件格式不正确,则会显示错误消息。 总的来说,Spring Boot使Excel文件解析变得非常简单。与其他Web框架相比,Spring Boot的优势在于它提供了开箱即用的依赖,使Excel文件解析变得更加容易。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值