Elemnt UI 上传组件自动下载回写文件

场景

用户导入EXCEL表格数据,服务器执行导入检查、合法数据写入数据库、回写文件。
文件中要在表格数据中每一行标明执行结果。若不成功说明错误原因。

实现方案

  1. 采用异步方案,在获取到上传组件成功上传之后。将结果文件存储到服务器/分布式文件服务器中,前端异步去执行下载文件。
  2. 采用同步,在上传的请求中将结果文件以流的形式返回给前端

方案1,简单高效。存在浪费服务器空间问题,因为这个文件不需要长期存放在服务器。若上传文件很多势必将造成磁盘空间紧张
方案2,简单直接高效。(故采用此方案)


Java 后台核心代码 (示例)


   /**
    * excel导入staff信息
    *
    * @param files
    * @param request
    * @param response
    */
   @ApiOperation(value = "导入code staff信息", httpMethod = "POST")
   @RequestMapping(value = "import_code_staff", method = RequestMethod.POST)
   @ResponseBody
   public ResponseEntity importCodeStaffInfo(@RequestPart(value = "files") MultipartFile files, HttpServletRequest request, HttpServletResponse response) {
   
       String fileName = files.getOriginalFilename();
       if (!ReadExcelUtil.isExcelFile(files.getOriginalFilename()))
           throw new BusinessException("Please upload the Excel file");
       Map<String, String> titleMap = GoodCodeStaffInfo.getExcelTileMapInfo();
       //0. todo 解析数据
       //List<GoodCodeStaffInfo> datas = ExcelUtils.getListBySheetName(sheetName, files,GoodCodeStaffInfo.class, titleMap);
       
       //1.todo 检查数据,并标记正确数据

       //2.todo 将正确数据写入数据库

       //3.回写文件
       try {
   
           handelResultExcel(files, datas, request, response);
       } catch (IOException e) {
   
           LOGGER.error("处理回写文件错误");
       }
       //此处return null
       return null;
   }
   /**
    * 处理回写文件内容
    *
    * @param files
    * @param datas
    * @param request
    * @param response
    * @throws IOException
    */
   private void handelResultExcel(MultipartFile files, List<GoodCodeStaffInfo> datas, HttpServletRequest request,
                                  HttpServletResponse response) throws IOException {
   
       try {
   
           XSSFWorkbook workbook = new XSSFWorkbook(files.getInputStream());
           
           //todo 写入文件内容

           String fileName = "result_" + System.currentTimeMillis() + ".xlsx";
           //将文件名进行URLEncode转换
          
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值