<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    小菜毛毛技術(shù)分享

    與大家共同成長

      BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
      164 Posts :: 141 Stories :: 94 Comments :: 0 Trackbacks
    版權(quán)聲明:原創(chuàng)作品,允許轉(zhuǎn)載,轉(zhuǎn)載時請務(wù)必以超鏈接形式標(biāo)明文章 原始出處 、作者信息和本聲明。否則將追究法律責(zé)任。http://zhangjunhd.blog.51cto.com/113473/18331
    Apachecommons-fileupload.jar可方便的實現(xiàn)文件的上傳功能,本文通過實例來介紹如何使用commons-fileupload.jar
    @author:ZJ 07-2-22
        將Apachecommons-fileupload.jar放在應(yīng)用程序的WEB-INF"lib即可使用。下面舉例介紹如何使用它的文件上傳功能。
    所使用的fileUpload版本為1.2,環(huán)境為Eclipse3.3+MyEclipse6.0FileUpload 是基于 Commons IO的,所以在進(jìn)入項目前先確定Commons IOjar包(本文使用commons-io-1.3.2.jar)在WEB-INF"lib下。
    此文作示例工程可在文章最后的附件中下載。
    示例1
    最簡單的例子,通過ServletFileUpload靜態(tài)類來解析Request,工廠類FileItemFactory會對mulipart類的表單中的所有字段進(jìn)行處理,不只是file字段。getName()得到文件名,getString()得到表單數(shù)據(jù)內(nèi)容,isFormField()可判斷是否為普通的表單項。
    demo1.html
    <html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=GB18030">
        <title>File upload</title>
    </head>
    <body>
           //必須是multipart的表單數(shù)據(jù)。
        <form name="myform" action="demo1.jsp" method="post"
           enctype="multipart/form-data">
           Your name:<br>
           <input type="text" name="name" size="15"><br>
           File:<br>
           <input type="file" name="myfile"><br>
           <br>
           <input type="submit" name="submit" value="Commit">
        </form>
    </body>
    </html>
     
    demo1.jsp
    <%@ page language="java" contentType="text/html; charset=GB18030"
        pageEncoding="GB18030"%>
    <%@ page import="org.apache.commons.fileupload.*"%>
    <%@ page import="org.apache.commons.fileupload.servlet.*"%>
    <%@ page import="org.apache.commons.fileupload.disk.*"%>
    <%@ page import="java.util.*"%>
     
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <%
        boolean isMultipart = ServletFileUpload.isMultipartContent(request);//檢查輸入請求是否為multipart表單數(shù)據(jù)。
        if (isMultipart == true) {
           FileItemFactory factory = new DiskFileItemFactory();//為該請求創(chuàng)建一個DiskFileItemFactory對象通過它來解析請求。執(zhí)行解析后,所有的表單項目都保存在一個List中。
           ServletFileUpload upload = new ServletFileUpload(factory);
           List<FileItem> items = upload.parseRequest(request);
           Iterator<FileItem> itr = items.iterator();
           while (itr.hasNext()) {
               FileItem item = (FileItem) itr.next();
               //檢查當(dāng)前項目是普通表單項目還是上傳文件。
               if (item.isFormField()) {//如果是普通表單項目,顯示表單內(nèi)容。
           String fieldName = item.getFieldName();
           if (fieldName.equals("name")) //對應(yīng)demo1.htmltype="text" name="name"
               out.print("the field name is" + item.getString());//顯示表單內(nèi)容。
           out.print("<br>");
               } else {//如果是上傳文件,顯示文件名。
           out.print("the upload file name is" + item.getName());
           out.print("<br>");
               }
           }
        } else {
           out.print("the enctype must be multipart/form-data");
        }
    %>
    <html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=GB18030">
        <title>File upload</title>
    </head>
    <body>
    </body>
    </html>
    結(jié)果:
    the field name isjeff
    the upload file name isD:"C語言考試樣題"作業(yè)題.rar
    示例2
    上傳兩個文件到指定的目錄。
    demo2.html
    <html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=GB18030">
        <title>File upload</title>
    </head>
    <body>
        <form name="myform" action="demo2.jsp" method="post"
           enctype="multipart/form-data">
           File1:<br>
           <input type="file" name="myfile"><br>
           File2:<br>
           <input type="file" name="myfile"><br>
           <br>
           <input type="submit" name="submit" value="Commit">
        </form>
    </body>
    </html>
     
    demo2.jsp
    <%@ page language="java" contentType="text/html; charset=GB18030"
        pageEncoding="GB18030"%>
    <%@ page import="org.apache.commons.fileupload.*"%>
    <%@ page import="org.apache.commons.fileupload.servlet.*"%>
    <%@ page import="org.apache.commons.fileupload.disk.*"%>
    <%@ page import="java.util.*"%>
    <%@ page import="java.io.*"%>
     
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <%String uploadPath="D:""temp";
     boolean isMultipart = ServletFileUpload.isMultipartContent(request);
     if(isMultipart==true){
         try{
            FileItemFactory factory = new DiskFileItemFactory();
            ServletFileUpload upload = new ServletFileUpload(factory);
            List<FileItem> items = upload.parseRequest(request);//得到所有的文件
           Iterator<FileItem> itr = items.iterator();
            while(itr.hasNext()){//依次處理每個文件
            FileItem item=(FileItem)itr.next();
            String fileName=item.getName();//獲得文件名,包括路徑
            if(fileName!=null){
                File fullFile=new File(item.getName());
                File savedFile=new File(uploadPath,fullFile.getName());
                item.write(savedFile);
            }
            }
            out.print("upload succeed");
         }
         catch(Exception e){
            e.printStackTrace();
         }
     }
     else{
         out.println("the enctype must be multipart/form-data");
     }
    %>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=GB18030">
    <title>File upload</title>
    </head>
    <body>
    </body>
    </html>
    結(jié)果:
    upload succeed
    此時,在"D:"temp"下可以看到你上傳的兩個文件。
    示例3
    上傳一個文件到指定的目錄,并限定文件大小。
    demo3.html
    <html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=GB18030">
        <title>File upload</title>
    </head>
    <body>
        <form name="myform" action="demo3.jsp" method="post"
           enctype="multipart/form-data">
           File:<br>
           <input type="file" name="myfile"><br>
           <br>
           <input type="submit" name="submit" value="Commit">
        </form>
    </body>
    </html>
     
    demo3.jsp
    <%@ page language="java" contentType="text/html; charset=GB18030"
        pageEncoding="GB18030"%>
    <%@ page import="org.apache.commons.fileupload.*"%>
    <%@ page import="org.apache.commons.fileupload.servlet.*"%>
    <%@ page import="org.apache.commons.fileupload.disk.*"%>
    <%@ page import="java.util.*"%>
    <%@ page import="java.io.*"%>
     
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <%
        File uploadPath = new File("D:""temp");//上傳文件目錄
        if (!uploadPath.exists()) {
           uploadPath.mkdirs();
        }
        // 臨時文件目錄
        File tempPathFile = new File("d:""temp""buffer""");
        if (!tempPathFile.exists()) {
           tempPathFile.mkdirs();
        }
        try {
           // Create a factory for disk-based file items
           DiskFileItemFactory factory = new DiskFileItemFactory();
     
           // Set factory constraints
           factory.setSizeThreshold(4096); // 設(shè)置緩沖區(qū)大小,這里是4kb
           factory.setRepository(tempPathFile);//設(shè)置緩沖區(qū)目錄
     
           // Create a new file upload handler
           ServletFileUpload upload = new ServletFileUpload(factory);
     
           // Set overall request size constraint
           upload.setSizeMax(4194304); // 設(shè)置最大文件尺寸,這里是4MB
     
           List<FileItem> items = upload.parseRequest(request);//得到所有的文件
           Iterator<FileItem> i = items.iterator();
           while (i.hasNext()) {
               FileItem fi = (FileItem) i.next();
               String fileName = fi.getName();
               if (fileName != null) {
           File fullFile = new File(fi.getName());
           File savedFile = new File(uploadPath, fullFile
                  .getName());
           fi.write(savedFile);
               }
           }
           out.print("upload succeed");
        } catch (Exception e) {
           e.printStackTrace();
        }
    %>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=GB18030">
    <title>File upload</title>
    </head>
    <body>
    </body>
    </html>
    示例4
    利用Servlet來實現(xiàn)文件上傳。
    Upload.java
    package com.zj.sample;
     
    import java.io.File;
    import java.io.IOException;
    import java.util.Iterator;
    import java.util.List;
     
    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.disk.DiskFileItemFactory;
    import org.apache.commons.fileupload.servlet.ServletFileUpload;
     
    @SuppressWarnings("serial")
    publicclass Upload extends HttpServlet {
        private String uploadPath = "D:""temp"; // 上傳文件的目錄
        private String tempPath = "d:""temp""buffer"""; // 臨時文件目錄
        File tempPathFile;
     
        @SuppressWarnings("unchecked")
        publicvoid doPost(HttpServletRequest request, HttpServletResponse response)
               throws IOException, ServletException {
           try {
               // Create a factory for disk-based file items
               DiskFileItemFactory factory = new DiskFileItemFactory();
     
               // Set factory constraints
               factory.setSizeThreshold(4096); // 設(shè)置緩沖區(qū)大小,這里是4kb
               factory.setRepository(tempPathFile);// 設(shè)置緩沖區(qū)目錄
     
               // Create a new file upload handler
               ServletFileUpload upload = new ServletFileUpload(factory);
     
               // Set overall request size constraint
               upload.setSizeMax(4194304); // 設(shè)置最大文件尺寸,這里是4MB
     
               List<FileItem> items = upload.parseRequest(request);// 得到所有的文件
               Iterator<FileItem> i = items.iterator();
               while (i.hasNext()) {
                  FileItem fi = (FileItem) i.next();
                  String fileName = fi.getName();
                  if (fileName != null) {
                      File fullFile = new File(fi.getName());
                      File savedFile = new File(uploadPath, fullFile.getName());
                      fi.write(savedFile);
                  }
               }
               System.out.print("upload succeed");
           } catch (Exception e) {
               // 可以跳轉(zhuǎn)出錯頁面
               e.printStackTrace();
           }
        }
     
        publicvoid init() throws ServletException {
           File uploadFile = new File(uploadPath);
           if (!uploadFile.exists()) {
               uploadFile.mkdirs();
           }
           File tempPathFile = new File(tempPath);
            if (!tempPathFile.exists()) {
               tempPathFile.mkdirs();
           }
        }
    }
     
    demo4.html
    <html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=GB18030">
        <title>File upload</title>
    </head>
    <body>
    // action="fileupload"對應(yīng)web.xml<servlet-mapping><url-pattern>的設(shè)置.
        <form name="myform" action="fileupload" method="post"
           enctype="multipart/form-data">
           File:<br>
           <input type="file" name="myfile"><br>
           <br>
           <input type="submit" name="submit" value="Commit">
        </form>
    </body>
    </html>
     
    web.xml
    <servlet>
        <servlet-name>Upload</servlet-name>
        <servlet-class>com.zj.sample.Upload</servlet-class>
    </servlet>
     
    <servlet-mapping>
        <servlet-name>Upload</servlet-name>
        <url-pattern>/fileupload</url-pattern>
    </servlet-mapping>

    本文出自 “子 孑” 博客,請務(wù)必保留此出處http://zhangjunhd.blog.51cto.com/113473/18331

    本文出自 51CTO.COM技術(shù)博客

    附件下載:
      fileUpload工程
    posted on 2010-01-19 23:26 小菜毛毛 閱讀(1140) 評論(3)  編輯  收藏 所屬分類: J2EE相關(guān)技術(shù)與框架

    Feedback

    # re: Apache Commons fileUpload實現(xiàn)文件上傳 2010-01-20 01:09 小菜毛毛
    非常的有用,我自己項目中就是這樣用的  回復(fù)  更多評論
      

    # re: Apache Commons fileUpload實現(xiàn)文件上傳 2010-01-20 01:14 小菜毛毛
    這里附上需用到的JAR包,新手的話需要找半天 呵呵
    http://www.tkk7.com/Files/caizh2009/commons-io-1.4-bin.zip

    http://www.tkk7.com/Files/caizh2009/commons-fileupload-1.2.1-bin.zip
      回復(fù)  更多評論
      

    # re: Apache Commons fileUpload實現(xiàn)文件上傳 2016-06-13 23:16 未來不是夢
    good  回復(fù)  更多評論
      

    主站蜘蛛池模板: 亚洲高清国产拍精品青青草原| 亚洲熟妇无码另类久久久| 亚洲乱亚洲乱妇无码麻豆| 亚洲喷奶水中文字幕电影| 一区二区免费国产在线观看 | 又黄又大的激情视频在线观看免费视频社区在线 | 亚洲视屏在线观看| 国产偷国产偷亚洲高清人 | 无码人妻丰满熟妇区免费| 日韩免费毛片视频| 日木av无码专区亚洲av毛片| 在线播放亚洲精品| 国产精品成人观看视频免费 | a毛片全部免费播放| 影音先锋在线免费观看| 国产成人精品日本亚洲网站| 久久精品国产亚洲av天美18| 99视频有精品视频免费观看| 亚洲精品tv久久久久久久久久| 国产精品亚洲片夜色在线| 曰批全过程免费视频在线观看无码 | 亚洲激情视频在线观看| 边摸边吃奶边做爽免费视频网站| 成人黄色免费网址| 国产v亚洲v天堂无码网站| 在线观看亚洲视频| 成人免费无码视频在线网站| 亚洲a一级免费视频| 国产V片在线播放免费无码| 看全色黄大色大片免费久久| 亚洲无人区视频大全| 免费网站观看WWW在线观看| 亚洲av无码国产精品色在线看不卡 | 国产黄色片在线免费观看| 亚洲国产精品网站久久| 免费国产99久久久香蕉| 国产亚洲精品成人AA片新蒲金| 国产综合激情在线亚洲第一页 | 亚洲国产黄在线观看 | 亚洲av成人一区二区三区在线播放| 亚洲免费中文字幕|