步驟概括:
1.往項目裏添加jar包,分別爲(commons-fileupload-1.3.2.jar,commons-io-2.5.jar)。
2.設置數據庫中的表,數據類型(varchar)或(text),長度弄長點,因爲在這裏存放的是一個路徑(文件的路徑)。
3.設置表單,把input設置爲file類型,form標籤修改屬性爲enctype="multipart/form-data"(在使用包含文件上傳控件的表單時,必須使用該值)。
4.在servlet裏寫程序。
上傳表單,代碼如下:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>上傳文件</title> </head> <body> <form method="post" action="/4-26/UploadServlet" enctype="multipart/form-data"> 選擇一個文件: <input type="file" name="uploadFile" /> <br/><br/> <input type="submit" value="上傳" /> </form> </body> </html>
xml配置如下:
<servlet> <servlet-name>UploadServlet</servlet-name> <servlet-class>4-26.UploadServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>UploadServlet</servlet-name> <url-pattern>/UploadServlet</url-pattern> </servlet-mapping>
在UploadServlet類中重寫doGet方法:
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //獲取文件名 String filename=request.getParameter("name"); //設置Content-Disposition response.setHeader("Content-Disposition", "attachment;filename="+filename); //獲取要下載的文件絕對路徑,我的文件都放到WebRoot/Upload目錄下 ServletContext context=this.getServletContext(); String fullFileName=context.getRealPath("/Upload/"+filename); //輸入流爲項目文件,輸出流指向瀏覽器 InputStream is=new FileInputStream(fullFileName); ServletOutputStream os =response.getOutputStream(); //關閉流 is.close(); os.close(); }