Servlet3.0現實文件上傳

fdwm 9年前發布 | 4K 次閱讀 Java Servlet 文件上傳

index.html

    <html>  
    <head>  
    <meta http-equiv="Content-Type" content="text/html; charset=GB18030">  
    <title>上傳圖片</title>  
    </head>  
    <body>  
    <center>  
      <form action="upload_pic" method="post" enctype="multipart/form-data">  
      文件:<input type="file" name="pic"/><br/>  
      描述:<input type="text" name="des"/><br/>  
      <input type="submit" value="upload"/>  
      </form>  
    </center>  
    </body>  
    </html>  

UploadPictureServlet.java

    import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.UUID;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.servlet.ServletException;  
import javax.servlet.annotation.MultipartConfig;  
import javax.servlet.annotation.WebServlet;  
import javax.servlet.http.HttpServlet;  
import javax.servlet.http.HttpServletRequest;  
import javax.servlet.http.HttpServletResponse;  
import javax.servlet.http.Part;  

/** 
 * Servlet implementation class UploadPictureServlet 
 */  
@MultipartConfig  
@WebServlet("/upload_pic")  
public class UploadPictureServlet extends HttpServlet {  
    private static final long serialVersionUID = 1L;  

    private String mimes="image/jpeg,image/gif,image/bmp,image/jpg";  

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  
        response.setContentType("text/html;charset=gbk");  
        PrintWriter out=response.getWriter();  

        out.println("<html><head><title>文件上傳</title></head><body>");  
        Part part=request.getPart("pic");  
        System.out.println(part);  
        if(null!=part){  
            String mime=part.getContentType();  

            if(-1==mimes.indexOf(mime.toLowerCase())){  
                //不是圖片  
                part.delete();  


                out.println("<script language='javascript'>alert('不是圖片')</script>");  
            }else if(1024*1024*2<part.getSize()){  
                part.delete();  
                out.println("<script language='javascript'>alert('圖片不能超出2M')</script>");  
            }else{  
                String fileName=getFileName(part);  
                String extName=getExtName(fileName);  
                long size=part.getSize();  
                String contentType=part.getContentType();  
                String path=this.getServletContext().getRealPath("pics");  
                String newFileName=UUID.randomUUID().toString()+extName;  
                //存到服務器  
                part.write(path+File.separator+newFileName);  
                out.println("<h1>上傳成功!!!!</h1><ul>");  
                out.println("<li>客戶端文件名:"+fileName+"</li>");  
                out.println("<li>ContentType:"+extName+"</li>");  
                out.println("<li>長度:"+size+"</li>");  
                out.println("<li>服務器上文件名:"+path+File.separator+newFileName+"</li>");  
                out.println("</ul>");  
            }  

        }  


        out.println("</body></html>");  
        out.close();  
    }  
    //取得文件擴展名  
    public String getExtName(String fileName){  
        String extName=null;  
        int index=fileName.lastIndexOf(".");  
        if(-1!=index){  
            extName=fileName.substring(index);  
        }  
        return extName;  


    }  
    //取得文件名  
    public String getFileName(Part part){  
        String fileName=null;  
        String hv=part.getHeader("content-disposition");  
        String pattern="(form-data; name=\"(.*?)\"; filename=\"(.*?)\")";  
        Matcher match=Pattern.compile(pattern).matcher(hv);  
        if(match.find()){  
            fileName=match.group(3);  
        }  
        return fileName;  
    }  

}  </pre> 


 本文由用戶 fdwm 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!