zoukankan      html  css  js  c++  java
  • 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包导入到项目中。

      

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

  • 相关阅读:
    出错处理函数abort、exit、atexit、strerror. . .
    linux查询系统信息命令
    [转载]比google和百度强十倍的搜索类网站
    陶  朱  商  经
    ip的划分,超详细.【网管常识】
    linux的hostname修改详解
    勤于寻找谈话资料
    Windows常用命令集
    C语言中printf格式
    How to disable SELinux
  • 原文地址:https://www.cnblogs.com/zhengcheng/p/4260225.html
Copyright © 2011-2022 走看看