1. 程式人生 > >Servlet學習筆記 上傳單個檔案的方法

Servlet學習筆記 上傳單個檔案的方法

本篇部落格介紹的是單個檔案上傳到tomcat伺服器上的方法,下面開始介紹方法。
第一:首先要注意的是上傳檔案必須用的是post方法,用get的話則不能完成,form表單裡需要在原來的基礎上增加一個

enctype="multipart/form-data"
這裡要注意不要出錯(很重要的!)

第二:這裡要改變一下Servlet裡面的處理內容,要增加一個註解

@MultipartConfig(location="d:/")
(其中(location="d:/")說明的是你要上傳的檔案儲存的位置)

第三:檔案的命名方式,這裡介紹兩種檔案的命名方式。
第一種比較簡單,自己隨意給上傳的檔案起一個名字。樣例程式碼如下:

Part part=request.getPart("photo")//photo是你上傳時的檔名
part.write("first-photo")//儲存的檔名這裡可以隨便起

第二種方式是獲取上傳檔案的名字,進行儲存,下面介紹主要的程式碼

 private  String getfilename(Part part)
        {
              String header=part.getHeader("Content-Disposition");//獲取頭為Content-Disposition的內容
              String filename=header
.substring(header.indexOf("filename=\"")+10,header.lastIndexOf("\""));//擷取filename之後的內容也就是上傳是檔案的名字了 return filename; }

下面附上一個dopost方法裡面的完整的程式碼

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    {
        // TODO Auto-generated method stub
request.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=UTF-8"); PrintWriter out=response.getWriter(); String names=request.getParameter("username"); out.println(names); String s=getfilename(part);//第二種方法 part.write(s); part.write("first-photo.jpg");//第一種方法 out.close(); } private String getfilename(Part part) { String header=part.getHeader("Content-Disposition"); String filename=header.substring(header.indexOf("filename=\"")+10,header.lastIndexOf("\"")); return filename; } }