Java 文件上传

一、使用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包导入到项目中。

  Java 文件上传

  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文件夹中。

 

你可能感兴趣的:(java)