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

来源:互联网 发布:提高手机网速软件 编辑:程序博客网 时间:2024/05/23 11:04
最近开始学习Webx框架实现。简单学习了一下Webx框架的一些知识
开发了一个功能上传csv格式的文件,将文件保存到服务器,并且读取文件内的数据导入到数据库里面。
上网找了一下Webx上传文件保存到服务器的知识,可以参考的内容比较少,零零散散花了一些时间最后实现了这个功能。
在此记录一下,提供一个较为完善的参考案例给大家。

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

<form method="post" id="uploadLineWhiteListForm" enctype="multipart/form-data" class="form-inline"> <div class="row-margin-top">  <div class="input-group input-group-sm">      <span class="input-group-addon">白名单批量导入</span>         <input type="file" class="form-control" id="import_file" name="import_file" accept=".csv"/>        </div>          <input type="hidden" name="action" value="OpsAction"/></td>        <div class="input-group input-group-sm">          <input class="btn btn-sm btn-primary" type="submit" name="event_submit_do_upload_line_white_list" value="导入"/>        </div>    </div></form>

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");  } }
这样文件上传的功能也就基本上实现了



0 0
原创粉丝点击