Servlet學習筆記 上傳單個檔案的方法
阿新 • • 發佈:2019-02-06
本篇部落格介紹的是單個檔案上傳到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;
}
}