使用commons-fileupload组件实现文件上传

来源:互联网 发布:怎么注册备案域名 编辑:程序博客网 时间:2024/04/29 00:59


1.获取commons-fileupload组件

     在http://jakarta.apache.org/site/downloads下载这个组件,解压文件后将commoms-fileupload-1.2.jar复制到WEB-INF/lib目录下

2.在使用commons-fileupload组件时,需要另外一个组建commoms-io支持,可以到http://jakarta.apache.org/site/downloads上找到该文件,下载完成后commoms-io.jar复制

     到WEB-INF/lib文件目录下


经过以上的配置就可以使用该组件完成文件上传:


文件上传的jsp页面

<%@ page contentType="text/html; charset=gb2312" %>  <html> <head> <title>commonfileupload上传文件示例</title> </head> <body> <font size="2">commonfileupload上传文件示例 <br><form method="post" action="FileUpload" ENCTYPE="multipart/form-data">  文件:<input type="file"  name="file"><input type="submit" value="上传" name="submit">  </form> </font></body> </html>


接受表单实现文件上传的servlet

package servlets;import java.io.File;import java.io.IOException;import java.io.PrintWriter;import java.util.Iterator;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.commons.fileupload.FileItem;import org.apache.commons.fileupload.FileItemFactory;import org.apache.commons.fileupload.FileUploadException;import org.apache.commons.fileupload.disk.DiskFileItemFactory;import org.apache.commons.fileupload.servlet.ServletFileUpload;public class FileUpload extends HttpServlet {public void doPost(HttpServletRequest request, HttpServletResponse response)throws IOException, ServletException     //判断提交过来的是否为文件上传的表单boolean isMultipart = ServletFileUpload.isMultipartContent(request);if (isMultipart) {    //创建一个文件上传对象FileItemFactory factory = new DiskFileItemFactory();ServletFileUpload upload = new ServletFileUpload(factory);Iterator items;try {    //解析出表单提交的所有文件内容items = upload.parseRequest(request).iterator();while (items.hasNext()) {FileItem item = (FileItem) items.next();if (!item.isFormField()) {//取出上传文件的文件名称    String name = item.getName();        String fileName = name.substring(name.lastIndexOf('\\')+1,name.length());    String path = request.getRealPath("file")+File.separatorChar+fileName;    //上传文件    File uploadedFile = new File(path);    item.write(uploadedFile);        //打印上传成功信息    response.setContentType("text/html");response.setCharacterEncoding("gb2312");    PrintWriter out = response.getWriter();    out.print("<font size='2'>上传的文件为:"+name+"<br>");    out.print("保存的地址为:"+path+"</font>");}}} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}


注意:要在自己项目的WebRoot目录下新建一个file文件夹,用于存放你上传文件的位置。