zoukankan      html  css  js  c++  java
  • Servlet上传文件直接处理方式

    在开发的过程当中,经常遇到用文件上传的方式批量处理数据的方式,以前碰到的情况是先将文件保存到本地的临时文件,然后用poi的方式来进行处理,但是实际上,操作过程只是简单的读取操作,所以就不用那么复杂,下面记录了用servlet的javax.servlet.http.Part包的方式来处理这个功能。代码如下:

    Part part=request.getPart("标签name");
             String filename=getFileName(part.getHeader("content-disposition") );
             Boolean resultCode = true;
             StringBuffer result=new StringBuffer();
             //校验
             if(StringHelper.isEmpty(filename)){
                 result.append("请上传文件");
                 resultCode = false;
             }else if(!filename.endsWith("csv")){
                 result.append("上传文件只支持csv");
                 resultCode = false;
             }
             if(resultCode){
                 BufferedReader reader = new BufferedReader(new InputStreamReader(part.getInputStream())); 
                 String line=null; 
                 boolean isFirst=true;
                 while ((line = reader.readLine()) != null) { 
                        if(!isFirst){
                            result.append(line).append(",");
                        }else{
                         isFirst=false; 
                        }
                 } 
                 if(0<result.length()){
                     result=result.delete(result.length()-1, result.length());
                 }
             } 
             response.setContentType("text/html;charset=UTF-8");
             response.getWriter().print("<script type='text/javascript'>parent.callBack('"+result.toString()+"','"+resultCode+"');</script>");
             response.getWriter().close();
             return;

     private String getFileName(String header) { 
              if(!StringHelper.isEmpty(header)){
                   String[] tempArr1 = header.split(";");
                   String[] tempArr2 = tempArr1[2].split("="); 
                   String fileName = tempArr2[1].substring(tempArr2[1].lastIndexOf("\")+1).replaceAll(""", "");
                   return fileName;
              }else{
                  return "";
              }
         }
  • 相关阅读:
    C#如何调用非托管的C++Dll
    CList 点击表头排序 (3)两种排序的第二种
    CList 点击表头排序 (2)两种排序方法中其中一种
    CList 点击表头排序 (1)SortItems函数
    CListCtrl 隔行变色
    C++去掉字符串中首尾空格和所有空格
    Dialog和FormView如何派生通用类
    STL中erase()的陷阱
    socket 笔记(一)
    prettyJson V7.1 使用
  • 原文地址:https://www.cnblogs.com/smashed/p/4710037.html
Copyright © 2011-2022 走看看