• Java Web 文件上传


      在我们的web开发中,很多的时候都需要把本机的一些文件上传到web服务器上面去

    如:一个BBS系统,当用户使用这是系统的时候,能把本机的一些图片,文档上传到服务器

    上面去。然后其他用户可以去下载这些文件,那么这样的话,我们可以自己编程实现文件的上传

    但是更好的方式是使用一些已有的组件帮助我们实现这种上传功能。

    --------------------------------------------------------------------------------------------------

      常用的上传组件:  

        Apache 的 Commons FileUpload

        JavaZoom的UploadBean

        jspSmartUpload

    --------------------------------------------------------------------------------------------------

    FileUpload下载地址:

      http://commons.apache.org/fileupload/

      下载:commons-fileupload-1.2.2-bin.zip    得到:commons-fileupload-1.2.2.jar

      http://commons.apache.org/io/

      下载:commons-io-1.4-bin.zip       得到:commons-io-1.4.jar

    --------------------------------------------------------------------------------------------------

    upload.jsp

    代码;

    <%@ page language="java" contentType="text/html; charset=UTF-8"%>
    <html>
    <head>
    <title>using commons Upload to upload file </title>
    </head>
    <style>
    * { font-family: "宋体"; font-size: 14px }
    </style>
    <body>
    <p align="center"> 请您选择需要上传的文件</p>
    <form id="form1" name="form1" method="post" action="servlet/fileServlet" enctype="multipart/form-data">
     <table border="0" align="center">
      <tr>
       <td>上传人:</td>
       <td>
        <input name="name" type="text" id="name" size="20" ></td>
      </tr>  
      <tr>
       <td>上传文件:</td>
       <td><input name="file" type="file" size="20" ></td>
      </tr>    
      <tr>   
       <td></td><td>
        <input type="submit" name="submit" value="提交" >
        <input type="reset" name="reset" value="重置" >
       </td>
      </tr>
     </table>
    </form>
    </body>
    </html>

    --------------------------------------------------------------------------------------------------

    FileUploadServlet.java

    代码:

    /**
     *
     */
    package com.b510.example;

    import java.io.File;
    import java.io.IOException;
    import java.util.*;


    import javax.servlet.ServletConfig;
    import javax.servlet.ServletContext;
    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.FileUploadException;
    import org.apache.commons.fileupload.disk.DiskFileItemFactory;
    import org.apache.commons.fileupload.servlet.ServletFileUpload;

    /**
     *
     * @author XHW
     *
     * @date 2011-7-26
     *
     */
    public class FileUploadServlet extends HttpServlet {

     private static final long serialVersionUID = -7744625344830285257L;
     private ServletContext sc;
     private String savePath;

     public void doGet(HttpServletRequest request, HttpServletResponse response)
       throws ServletException, IOException {
      doPost(request, response);
     }
     

     public void init(ServletConfig config) {
      // 在web.xml中设置的一个初始化参数
      savePath = config.getInitParameter("savePath");
      sc = config.getServletContext();
     }
     
     public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      request.setCharacterEncoding("UTF-8");
      DiskFileItemFactory factory = new DiskFileItemFactory();
      ServletFileUpload upload = new ServletFileUpload(factory);
      try {
       List items = upload.parseRequest(request);
       Iterator itr = items.iterator();
       while (itr.hasNext()) {
        FileItem item = (FileItem) itr.next();
        if (item.isFormField()) {
         System.out.println("表单参数名:" + item.getFieldName() + ",表单参数值:" + item.getString("UTF-8"));
        } else {
         if (item.getName() != null && !item.getName().equals("")) {
          System.out.println("上传文件的大小:" + item.getSize());
          System.out.println("上传文件的类型:" + item.getContentType());
          // item.getName()返回上传文件在客户端的完整路径名称
          System.out.println("上传文件的名称:" + item.getName());

          File tempFile = new File(item.getName());

      //上传文件的保存路径
          File file = new File(sc.getRealPath("/") + savePath, tempFile.getName());
          item.write(file);
          request.setAttribute("upload.message", "上传文件成功!");
         }else{
          request.setAttribute("upload.message", "没有选择上传文件!");
         }
        }
       }
      }catch(FileUploadException e){
       e.printStackTrace();
      } catch (Exception e) {
       e.printStackTrace();
       request.setAttribute("upload.message", "上传文件失败!");
      }
      request.getRequestDispatcher("/uploadResult.jsp").forward(request, response);
     }
    }

    --------------------------------------------------------------------------------------------------

    uploadResult.jsp

    代码;

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
       
        <title>uploadResult</title>
       
     <meta http-equiv="pragma" content="no-cache">
     <meta http-equiv="cache-control" content="no-cache">
     <meta http-equiv="expires" content="0">   
     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
     <meta http-equiv="description" content="This is my page">
     <!--
     <link rel="stylesheet" type="text/css" href="styles.css">
     -->

      </head>
     
      <body>
      ${requestScope['upload.message'] }
        <a href="/upload/uploadFile.jsp">上传文件</a>
      </body>
    </html>

    --------------------------------------------------------------------------------------------------

    web.xml

    代码:

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.5"
     xmlns="http://java.sun.com/xml/ns/javaee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
      <servlet>
        <description>This is the description of my J2EE component</description>
        <display-name>This is the display name of my J2EE component</display-name>
        <servlet-name>FileUploadServlet</servlet-name>
        <servlet-class>com.b510.example.FileUploadServlet</servlet-class>

      <!--设置初始化参数-->
        <init-param>
         <param-name>savePath</param-name>
         <param-value>uploads</param-value>
        </init-param>
      </servlet>

      <servlet-mapping>
        <servlet-name>FileUploadServlet</servlet-name>
        <url-pattern>/servlet/fileServlet</url-pattern>
      </servlet-mapping>
      <welcome-file-list>
      <welcome-file>index.jsp</welcome-file>
        <welcome-file>uploadFile.jsp</welcome-file>
      </welcome-file-list>
    </web-app>

    ========================================================

    More reading,and english is important.

    I'm Hongten

     

    大哥哥大姐姐,觉得有用打赏点哦!多多少少没关系,一分也是对我的支持和鼓励。谢谢。
    Hongten博客排名在100名以内。粉丝过千。
    Hongten出品,必是精品。

    E | hongtenzone@foxmail.com  B | http://www.cnblogs.com/hongten

    ========================================================

  • 相关阅读:
    ActiveMQ (二):JMS
    Java消息队列--ActiveMq 初体验
    利用 UltraEdit 重新排版 XML 结构数据
    Java中的Arrays工具类
    数组的下标与长度
    数组的一维与多维
    MySQL数据库的下载与安装
    MySQL数据库的发展历程
    Java中的数组(Array)
    break与continue关键字
  • 原文地址:https://www.cnblogs.com/hongten/p/2117340.html
Copyright © 2020-2023  润新知