fileUpload 文件上传

下面是用fileupload上传文件的简单工具类:

Java代码
  1. import java.util.List;   
  2. import javax.servlet.http.HttpServletRequest;   
  3. import org.apache.commons.fileupload.FileItem;   
  4. import org.apache.commons.fileupload.FileItemFactory;   
  5. import org.apache.commons.fileupload.FileUpload;   
  6. import org.apache.commons.fileupload.FileUploadBase;   
  7. import org.apache.commons.fileupload.disk.DiskFileItemFactory;   
  8.   
  9. public class UpLoadUtil2 {   
  10.        
  11.     public static String upload(HttpServletRequest request){   
  12.         String msg = null;   
  13.            
  14.         try{   
  15.             boolean isMultipart = FileUploadBase.isMultipartContent(request);   
  16.             if(isMultipart){//判断Form是否为 multipart form   
  17.                 FileItemFactory fileItemFactory = new DiskFileItemFactory();//设置工厂   
  18.                 FileUpload fileUpload = new FileUpload(fileItemFactory);//上传组件   
  19.                    
  20.                 //这里就是中文文件名处理的代码,其实只有一行,setHeaderEncoding就可以了   
  21.                 fileUpload.setHeaderEncoding("utf-8");   
  22.                    
  23.                 List fileItemList = fileUpload.parseRequest(request);//解析上传文件数据包   
  24.                    
  25.                 for(int i=0;i<fileItemList.size();i++){   
  26.                     FileItem fileItem = (FileItem)fileItemList.get(i);//遍历每个上传文件   
  27.                        
  28.                     if(!fileItem.isFormField()){//判断是不是上传的文件   
  29.                         String fullFileName = fileItem.getName();//文件全名   
  30.                         String fileName = getFileName(fullFileName);//文件名   
  31.                         //设置文件存储在服务器上的路径   
  32.                         String path = request.getRealPath("/upload");   
  33.                         if(!new File(path).isDirectory())//如果不存在,则创建目录   
  34.                             new File(path).mkdirs();    
  35.                         File file = new File(path, fileName);   
  36.                         fileItem.write(file);   
  37.                            
  38.                         msg = file.getAbsolutePath();   
  39.                     }   
  40.                 }   
  41.             }   
  42.         }catch(Exception e){   
  43.             e.printStackTrace();   
  44.         }   
  45.            
  46.         return msg;   
  47.     }   
  48.        
  49.     public static String getFileName(String fullFileName){   
  50.         String fileName = fullFileName.substring(fullFileName.lastIndexOf("//")+1);   
  51.         return fileName;   
  52.     }   
  53.   
  54. }  

 如上upload方法中传入request对象参数,fileupload组件通过解析request得到上传文件。

下面是页面的部分代码,用来发送上传文件请求:

Html代码
  1. <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>  
  2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  3. <html>  
  4.     <head>  
  5.         <title>My JSP 'uploadExcel.jsp' starting page</title>  
  6.         <script type="text/javascript">  
  7.             function tosubmit(){   
  8.                 var filename = document.getElementById('fileid').value;   
  9.                 if(filename =='' || filename == null){   
  10.                     alert("请先选择要上传的文件");   
  11.                 }else{   
  12.                     window.document.form1.submit();   
  13.                 }   
  14.             }   
  15.         </script>  
  16.     </head>  
  17.   
  18.     <body>  
  19.         <form method="post" name="form1"  
  20.             action="<%=request.getContextPath()%>/uploadExcelServlet"  
  21.             enctype="multipart/form-data" >  
  22.             <table class="formLayout">  
  23.                 <tr>  
  24.                     <td align="right">  
  25.                         选择要上传的文件:   
  26.                     </td>  
  27.                     <td align="left">  
  28.                         <input type="file" id="fileid" name="filename"/>  
  29.                     </td>  
  30.                 </tr>  
  31.                 <tr>  
  32.                     <td align="right">  
  33.                         &nbsp;   
  34.                     </td>  
  35.                     <td align="left">  
  36.                         <input type="button" value="确定上传" class="btn_width"  
  37.                             onclick="tosubmit()">  
  38.                         &nbsp;&nbsp;   
  39.                         <input type="button" value="返回" onclick="window.history.back()"  
  40.                             class="btn_width">  
  41.                     </td>  
  42.                 </tr>  
  43.             </table>  
  44.         </form>  
  45.     </body>  
  46. </html>  

你可能感兴趣的:(exception,String,File,upload,Path,button)