一、使用commons-fileupload实现文件上传

  1、下载组件:

  commons-fileupload组件:http://commons.apache.org/proper/commons-fileupload/download_fileupload.cgi

  commons-io组件:http://commons.apache.org/proper/commons-io/download_io.cgi

 

  2、将jar包导入到项目中。

  

  3、上传页面

<!-- enctype="multipart/form-data":将表单以二进制格式进行提交-->
    <form action="upload.jsp" method="post" enctype="multipart/form-data">
        <input type="file" name="file1" />
        <input type="submit" value="上传" />
        <%
            if(request.getAttribute("imgurl") != null){
                String imgurl = request.getAttribute("imgurl").toString();
                out.println("<img src='" + imgurl + "' />");
            }
            if(request.getAttribute("msg") != null){
                out.print(request.getAttribute("msg"));
            }
        %>
    </from>

 

  4、表单处理页面

<%@page import="java.io.File"%>
<%@page import="java.text.SimpleDateFormat"%>
<%@page import="org.apache.commons.fileupload.FileItem"%>
<%@page import="java.util.*"%>
<%@page import="org.apache.commons.fileupload.disk.DiskFileItemFactory"%>
<%@page import="org.apache.commons.fileupload.FileItemFactory"%>
<%@page import="org.apache.commons.fileupload.servlet.ServletFileUpload"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
    //判断表单是否以multipart方式提交
    if (ServletFileUpload.isMultipartContent(request)) {
        //创建FileItemFactory实例
        FileItemFactory factory = new DiskFileItemFactory();
        //创建ServletFileUpload实例
        ServletFileUpload upload = new ServletFileUpload(factory);
        //获取页面中所有提交过来的信息
        List<FileItem> items = upload.parseRequest(request);
        //设置上传文件格式
        List<String> exts = new ArrayList<String>();
        exts.add(".jpg");
        exts.add(".gif");
        exts.add(".png");
        
        for (FileItem item : items) {
            //判断元素类型,true为普通表单元素,false为文件表单元素
            if (!item.isFormField()) {
                if (item.getSize() < 1024 * 1024) {
                    //获取文件名称
                    String filename = item.getName();
                    String fileext = filename.substring(filename.lastIndexOf("."));
                    if (exts.contains(fileext)) {
                        //设置文件上传的绝对路径
                        String uploadpath = this.getServletContext().getRealPath("uploads");
                        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddhhmmssms");
                        String newfilename = sdf.format(new Date()) + fileext;
                        File file = new File(uploadpath + "/" + newfilename);
                        item.write(file);
                        request.setAttribute("imgurl", "uploads/" + newfilename);
                    } else {
                        request.setAttribute("msg", "只能上传.jpg、.gif、.png格式的图片");
                    }
                }else{
                    request.setAttribute("msg", "最大只能上传1M的文件!");
                }
            }
            request.getRequestDispatcher("index.jsp").forward(request, response);
        }
    }
%>

 

  上传并显示图片,注意:图片是上传到 tomcat发布文件夹中,而不是在eclipse文件夹中。

 

posted on 2015-01-29 16:21  Builder  阅读(346)  评论(0编辑  收藏  举报