zoukankan      html  css  js  c++  java
  • 使用servlet实现文件上传

     1 package com.zhanghaobo.fileupload;
     2 
     3 import java.io.File;
     4 import java.io.IOException;
     5 import java.util.List;
     6 
     7 import javax.servlet.ServletException;
     8 import javax.servlet.http.HttpServlet;
     9 import javax.servlet.http.HttpServletRequest;
    10 import javax.servlet.http.HttpServletResponse;
    11 
    12 import org.apache.commons.fileupload.FileItem;
    13 import org.apache.commons.fileupload.disk.DiskFileItemFactory;
    14 import org.apache.commons.fileupload.servlet.ServletFileUpload;
    15 
    16 public class UploadServlet extends HttpServlet {
    17     @Override
    18     protected void doPost(HttpServletRequest req, HttpServletResponse resp)
    19             throws ServletException, IOException {
    20         DiskFileItemFactory factory=new DiskFileItemFactory();
    21         
    22         String realPath=req.getRealPath("/upload");
    23         
    24         //物理缓存存放地
    25         factory.setRepository(new File(realPath));
    26         
    27         //设置内存存放大小
    28         factory.setSizeThreshold(1024*1024);
    29         
    30         ServletFileUpload upload=new ServletFileUpload(factory);
    31         //FileItem 可以表示文件(file)也可以表示文本域(form item) 有一个isFormField方法判断是否是表单
    32         try{
    33             List<FileItem> list=(List<FileItem>)upload.parseRequest(req);
    34             for(FileItem item:list){
    35                 String name=item.getFieldName();
    36                 if(item.isFormField()){
    37                     String value=item.getString();
    38                     req.setAttribute(name, value);
    39                 }else{
    40                     String value=item.getName();
    41                     int start=value.lastIndexOf("\");
    42                     String fileName=value.substring(start+1);
    43                     req.setAttribute(name, fileName);
    44                     //上传文件存放地
    45                     item.write(new File(realPath,fileName));
    46                 }
    47             }
    48         }catch(Exception e){
    49             e.printStackTrace();
    50         }
    51         
    52         req.getRequestDispatcher("showResult.jsp").forward(req, resp);
    53     }
    54 }
     1 public class UploadServlet extends HttpServlet {
     2     @Override
     3     protected void doPost(HttpServletRequest req, HttpServletResponse resp)
     4             throws ServletException, IOException {
     5         DiskFileItemFactory factory=new DiskFileItemFactory();
     6         
     7         String realPath=req.getRealPath("/upload");
     8         
     9         //物理缓存存放地
    10         factory.setRepository(new File(realPath));
    11         
    12         //设置内存存放大小
    13         factory.setSizeThreshold(1024*1024);
    14         
    15         ServletFileUpload upload=new ServletFileUpload(factory);
    16         //FileItem 可以表示文件(file)也可以表示文本域(form item) 有一个isFormField方法判断是否是表单
    17         try{
    18             List<FileItem> list=(List<FileItem>)upload.parseRequest(req);
    19             for(FileItem item:list){
    20                 String name=item.getFieldName();
    21                 if(item.isFormField()){
    22                     String value=item.getString();
    23                     req.setAttribute(name, value);
    24                 }else{
    25                     String value=item.getName();
    26                     int start=value.lastIndexOf("\");
    27                     String fileName=value.substring(start+1);
    28                     req.setAttribute(name, fileName);
    29                     
    30                     //上传文件存放地
    31 //                    item.write(new File(realPath,fileName));
    32                     
    33                     InputStream is=item.getInputStream();
    34                     
    35                     long all=item.getSize();
    36                     
    37                     OutputStream os=new FileOutputStream(new File(realPath,fileName));
    38                     
    39                     byte[] buffer=new byte[400];
    40                     
    41                     int length=0;
    42                     int l=0;
    43                     DecimalFormat df=new DecimalFormat("#.00");
    44                     while(-1!=(length=is.read(buffer))){
    45                         os.write(buffer,0,length);
    46                         l+=length;
    47                         System.out.println("总大小"+all+""+"进度:"+(df.format((double)l/all*100))+"%"+"已经读取的大小"+l);
    48                     }
    49                     
    50                     is.close();
    51                     os.close();
    52                     
    53                 }
    54             }
    55         }catch(Exception e){
    56             e.printStackTrace();
    57         }
    58         
    59         req.getRequestDispatcher("showResult.jsp").forward(req, resp);
    60     }
    61 }
  • 相关阅读:
    laravel一对多
    laravel如何使用软删除
    java如何使用scanner
    java实现99乘法表
    git commit -am '本次提交描述'与 git commit -m '本次提交描述'
    django-pip安装
    pip切换阿里云镜像(国内镜像)
    [leetcode] Divide Two Integers
    [leetcode] Remove Duplicates from Sorted Array
    [leetcode] Remove Element
  • 原文地址:https://www.cnblogs.com/oldcownotGiveup/p/5377769.html
Copyright © 2011-2022 走看看