qq_264532115 2021-01-11 14:37 采纳率: 0%
浏览 24

文件上传解析内容!加q

boot+vue.

Excel,Jason,xml,CSV格式上传并解析文件内容保存到数据库。并且页面显示解析的内容

  • 写回答

1条回答 默认 最新

  • ~卑微的搬砖人~ 2023-04-06 10:47
    关注

    1、Vue+Element UI上传组件上传文件

    <el-upload
                    drag
                    ref="upload"
                    class="upload-demo"
                    :action="uploadDatasetUrl"//后端响应地址
                    :on-success='upLoadSuccess'//成功后的回调函数
                    :file-list="fileList"
            >
                <i class="el-icon-upload"></i>
                <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
            </el-upload>
            // 上传原始数据后,上传成功的回调函数 放在methods中
                upLoadSuccess(response, file, fileList)
                {
                    if (file != null) {
                        if (response.code !=0) {
                            console.log(response.code+response+file)
                            // 响应码不为0时,标识后台上传文件出错啦
                            file.status = 'error'
                            let fileName = file.name
                            file.name = file.name + '---上传失败'
                            this.$message({
                                type: 'error', message: fileName + '上传失败'
                            })
                        } else {
                            file.name = file.name + '---上传成功'
                        }
                    }
                }
    

    2、后端接收请求解析并入库

     @RequestMapping(value = "/uploadFile",method = RequestMethod.POST)
        @ApiOperation(value = "处理上传文件", notes = "处理上传文件", produces = MediaType.APPLICATION_JSON_VALUE)
        public JsonResult<Void> save(@RequestParam("file") MultipartFile multipartFile) throws Exception  {
            File file = null;
            file = File.createTempFile("tmp", null);
            file.deleteOnExit();
            if(multipartFile.getOriginalFilename().endsWith(".txt")){
                BufferedReader reader = null;
                String temp = null;
                try {
                    multipartFile.transferTo(file); //MultipartFile转File
                    reader = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8"));//解决服务器上乱码
                    reader.readLine();
                    while ((temp = reader.readLine()) != null) {
                        YdywHourEntity ydywHourEntity = new YdywHourEntity();
                        String[] s = temp.split(",");
                        ydywHourEntity.setYh2g(s[0]);
                        ydywHourEntity.setYh4g(s[1]);
                        ydywHourService.save(ydywHourEntity);
                    }
                }catch (Exception e){
                    e.printStackTrace();
                } finally {
                    if (reader != null) {
                        try {
                            reader.close();
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                    }
                }
            }
            else if(multipartFile.getOriginalFilename().endsWith(".csv")){
                System.out.println(multipartFile.getOriginalFilename());
                BufferedReader reader = null;
                String temp = null;
                try {
                    multipartFile.transferTo(file); //MultipartFile转File
                    reader = new BufferedReader(new InputStreamReader(new FileInputStream(file), "GBK"));//解决服务器上乱码
                    reader.readLine();
                    while ((temp = reader.readLine()) != null) {
                        YdywHourEntity ydywHourEntity = new YdywHourEntity();
                        String[] s = temp.split(",");
                        ydywHourEntity.setYh2g(s[0]);
                        ydywHourEntity.setYh4g(s[1]);
                        ydywHourEntity.setYhVolte(s[2]);
                        ydywHourService.save(ydywHourEntity);
                    }
                }catch (Exception e){
                    e.printStackTrace();
                } finally {
                    if (reader != null) {
                        try {
                            reader.close();
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                    }
                }
            }else if(multipartFile.getOriginalFilename().endsWith(".xlsx")){
                System.out.println(multipartFile.getInputStream());
                List<YdywHourTemplate> ydywHourEntityList = ExcelUtils.importData(multipartFile, YdywHourTemplate.class);
                System.out.println(ydywHourEntityList.toString());
                if (ydywHourEntityList == null || ydywHourEntityList.size() == 0) {
                    throw new EIPException("导入失败,导入数据错误");
                }
                for(YdywHourTemplate ydywHourTemplate:ydywHourEntityList){
                    try{
                        YdywHourEntity ydywHourEntity = new YdywHourEntity();
                        BeanUtils.copyProperties(ydywHourEntity, ydywHourTemplate);
                        ydywHourEntity.setCjsj((new Date()));
                        ydywHourService.save(ydywHourEntity);
                    }catch (Exception e){
                        e.printStackTrace();
                    }
                }
            }
            logger.info("处理上传文件");
            return JsonResult.ok();
        }
    

    到出excel的工具类方法:此时的excel的有标题行和头行

        public static <T> List<T> importData(MultipartFile file, Class<T> clazz) {
            ImportParams params = new ImportParams();
            params.setTitleRows(1);
            params.setHeadRows(1);
            params.setNeedVerify(true);
            params.setVerifyGroup(new Class[]{AddGroup.class});
            List<T> templateUserList = null;
            try {
                templateUserList = ExcelImportUtil.importExcel(file.getInputStream(), clazz, params);
            } catch (Exception e) {
                e.printStackTrace();
                throw new EIPException("导入失败,请确定数据格式是否正确");
            }
            return templateUserList;
        }
    
    评论

报告相同问题?

悬赏问题

  • ¥20 关于#windows#的问题,请各位专家解答!(相关搜索:服务器)
  • ¥30 使用C++实现ATM系统
  • ¥20 求帮,直连能连上oracle12,但是thinkphp6就是报错
  • ¥15 paddleocr运行报错
  • ¥15 怎么用 matlab 设计滞后-超前串联校正网络
  • ¥15 MFC引用C#生成的dll,将dll放置到非exe程序目录,如何操作
  • ¥15 C#创建webservice接口,三方通过多次跳转访问本方服务,获取wsdl文档,wsdl中ip地址为局域网内本机地址而非三方直接访问的地址。
  • ¥15 关于#wireshark#的问题:需要安卓app流量数据集要安卓流量做包序列长度的实验,比如某些流量是在看视频还是在发评论
  • ¥15 Smail语句如何使用判断语句跳过验证卡密界面
  • ¥15 关于#wireshark#的问题:并且能够给数据做标注,如这个流量是在看视频或者是在转账