webx框架 实现文件上传保存服务器 解析

最近开始学习Webx框架实现。简单学习了一下Webx框架的一些知识
开发了一个功能上传csv格式的文件,将文件保存到服务器,并且读取文件内的数据导入到数据库里面。
上网找了一下Webx上传文件保存到服务器的知识,可以参考的内容比较少,零零散散花了一些时间最后实现了这个功能。
在此记录一下,提供一个较为完善的参考案例给大家。

1.VM界面增加上传文件控件

白名单批量导入

form中指定了表单提交事件会由 OpsAction.java中的doUploadLineWhiteList方法处理
accept=".csv"在我们点击上传文件的时候,默认显示csv的文件,但是实际上我们还是可以选择其它文件类型。因此文件格式后台也会进行检验。
2. doUploadLineWhiteList方法
public void doUploadLineWhiteList(TurbineRunData rundata, Context context)
   throws Exception {
  try {
   FileItem file = rundata.getParameters().getFileItem("import_file"); // 该文件为上传的文件
   if (file == null) {
          ResponseUtils.outString("ERROR: " + "文件未上传!", response, "GBK");
          return;
   }
   //检查文件类型
   String fileName = file.getName();
   String object[] = fileName.split("\\.");
   String prefix = "";
   String suffix = "csv";
   if(object != null && object.length != 0){
    prefix = object[0];
    suffix = object[object.length-1];
   }
   if(!"csv".equals(suffix)){
          ResponseUtils.outString("ERROR: " + "只支持CSV格式文件导入!", response, "GBK");
          return;
   }
   Date now = FrameTimeUtil.getSysDate();
   BufferedReader reader = new BufferedReader(new InputStreamReader(file.getInputStream()));
   reader.readLine();
   String line = null; 
             while((line=reader.readLine())!=null){ 
                 String[] item = line.split(",",-1);//CSV格式文件为逗号分隔符文件,这里根据逗号切分,处理多个空值
                 if(item.length != 6){
               ResponseUtils.outString("ERROR: " + "上传文件内容不正确!", response, "GBK");
               return;
                 }else{//插入数据到数据库 } 
             } 
            //保存文件
到uploadFiles目录下面
    String filePath = rundata.getRequestContext().getServletContext().getRealPath("/uploadFiles");
    fileName = prefix + new SimpleDateFormat("yyyyMMddHHmmss").format(now) + "." + suffix;
   file.write(new File(filePath, fileName));
         ResponseUtils.outString("操作成功", response, "GBK");
  } catch (Exception e) {
   log.error("操作异常", e);
   String msg = "ERROR: " + e.getMessage();
   ResponseUtils.outString(msg, response, "GBK");
  }

 }
这样文件上传的功能也就基本上实现了



你可能感兴趣的:(JAVA开发)