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 "";
              }
         }
  • 相关阅读:
    AC自动机模板
    KMP 模板
    HDU 2746 Cyclic Nacklace
    LCS模板
    POJ 1159 Palindrome
    LIS n^2&nlogn模板
    Codeforces Round #Pi (Div. 2) C. Geometric Progression
    Codeforces Beta Round #25 (Div. 2 Only)E. Test
    Codeforces Beta Round #25 (Div. 2 Only)D. Roads not only in Berland
    bzoj5055 膜法师
  • 原文地址:https://www.cnblogs.com/smashed/p/4710037.html
Copyright © 2011-2022 走看看