步骤概括:
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(); }