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

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

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

    隨筆 - 45, 文章 - 2, 評論 - 11, 引用 - 0
    數據加載中……

    翻譯:使用Servlet實現文件上傳

    原文地址:http://www.tutorialspoint.com/servlets/servlets-file-uploading.htm

     

    一個Servlet可以通過HTML表單標簽將文件上傳到服務器。支待上傳的有文本、圖像及任何文件。

    創建文件上傳表單:

             下面的html代碼創建了一個上傳表單。創建過程需要注意以下幾點:

    form標簽中的method屬性必須設置為POST,即GET方法是不可以的。

    form標簽中的enctype屬性應該設置為multipart/form-data

    from標簽中的action屬性應該與服務器后臺的servlet映射路徑相同。接下來的實例,我們將使用UploadServlet實現文件上傳。

    要上傳一個文件,你應該使用一個<input type=”file”.../>標記。要多個文件上傳,必須包含多個具有不同的名稱屬性值的<input type=”file”.../>標記。The browser associates a Browse button with each of them

    <html>

    <head>

    <title>File Uploading Form</title>

    </head>

    <body>

    <h3>File Upload:</h3>

    Select a file to upload: <br />

    <form action="UploadServlet" method="post"

                            enctype="multipart/form-data">

    <input type="file" name="file" size="50" />

    <br />

    <input type="submit" value="Upload File" />

    </form>

    </body>

    </html>

    以上代碼將得到以下效果。你可以在本地PC上選擇一個文件。當你點擊“Upload File”,表單將會隨著你選擇的文件一起被提交。

    后臺servlet

    以下UploadServlet servlet將接收上傳的文件并將其保存入<Tomcat-installation-directory>/webapps/data文件夾。這個文件夾的名稱可以通過外部配置文件web.xml中的context-param元素內容增加。代碼如下:

    <web-app>
    ....
    <context-param> 
        <description>Location to store uploaded file</description> 
        <param-name>file-upload</param-name> 
        <param-value>
             c:"apache-tomcat-5.5.29"webapps"data"
         </param-value> 
    </context-param>
    ....
    </web-app>

             以下是實現了多文件同時上傳功能的UploadServlet。在此之前您必須確定以下幾點:

    以下實例依賴F ileUpload類,所以您須將最新版的commons-fileupload.x.x.jar放到您的classpath下。可以從這里下載:http://commons.apache.org/fileupload/

    FileUpload類依賴于Commons IO包,所以您須將最新版commons-fileupload.x.x.jar放到您的classpath下。可以從這里下載:http://commons.apache.org/io/

    在測試以下例子的時候,您應該上傳小于maxFileSize的文件,否則無法上傳。

    事先確定你已經建議好文件夾:c:"tempc:"apache-tomcat-5.5.29"webapps"data

    // Import required java libraries
    import java.io.*;
    import java.util.*;
    import javax.servlet.ServletConfig;
    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;
    import org.apache.commons.io.output.*;
     
    public class UploadServlet extends HttpServlet {
       
       private boolean isMultipart;
       private String filePath;
       private int maxFileSize = 50 * 1024;
       private int maxMemSize = 4 * 1024;
       private File file ;
     
       public void init( ){
          // Get the file location where it would be stored.
          filePath = 
                 getServletContext().getInitParameter("file-upload"); 
       }
       public void doPost(HttpServletRequest request, 
                   HttpServletResponse response)
                  throws ServletException, java.io.IOException {
          // Check that we have a file upload request
          isMultipart = ServletFileUpload.isMultipartContent(request);
          response.setContentType("text/html");
          java.io.PrintWriter out = response.getWriter( );
          if( !isMultipart ){
             out.println("<html>");
             out.println("<head>");
             out.println("<title>Servlet upload</title>"); 
             out.println("</head>");
             out.println("<body>");
             out.println("<p>No file uploaded</p>"); 
             out.println("</body>");
             out.println("</html>");
             return;
          }
          DiskFileItemFactory factory = new DiskFileItemFactory();
          // maximum size that will be stored in memory
          factory.setSizeThreshold(maxMemSize);
          // Location to save data that is larger than maxMemSize.
          factory.setRepository(new File("c:""temp"));
     
          // Create a new file upload handler
          ServletFileUpload upload = new ServletFileUpload(factory);
          // maximum file size to be uploaded.
          upload.setSizeMax( maxFileSize );
     
          try{ 
          // Parse the request to get file items.
          List fileItems = upload.parseRequest(request);
            
          // Process the uploaded file items
          Iterator i = fileItems.iterator();
     
          out.println("<html>");
          out.println("<head>");
          out.println("<title>Servlet upload</title>"); 
          out.println("</head>");
          out.println("<body>");
          while ( i.hasNext () ) 
          {
             FileItem fi = (FileItem)i.next();
             if ( !fi.isFormField () )      
             {
                // Get the uploaded file parameters
                String fieldName = fi.getFieldName();
                String fileName = fi.getName();
                String contentType = fi.getContentType();
                boolean isInMemory = fi.isInMemory();
                long sizeInBytes = fi.getSize();
                // Write the file
                if( fileName.lastIndexOf("""") >= 0 ){
                   file = new File( filePath + 
                   fileName.substring( fileName.lastIndexOf(""""))) ;
                }else{
                   file = new File( filePath + 
                   fileName.substring(fileName.lastIndexOf("""")+1)) ;
                }
                fi.write( file ) ;
                out.println("Uploaded Filename: " + fileName + "<br>");
             }
          }
          out.println("</body>");
          out.println("</html>");
       }catch(Exception ex) {
           System.out.println(ex);
       }
       }
       public void doGet(HttpServletRequest request, 
                           HttpServletResponse response)
            throws ServletException, java.io.IOException {
            
            throw new ServletException("GET method used with " +
                    getClass( ).getName( )+": POST method required.");
       } 
    }

           編譯并運行Servlet

        編譯以上UploadServlet并在web.xml中創建必須的實體,如下:

    <servlet>
       <servlet-name>UploadServlet</servlet-name>
       <servlet-class>UploadServlet</servlet-class>
    </servlet>
     
    <servlet-mapping>
       <servlet-name>UploadServlet</servlet-name>
       <url-pattern>/UploadServlet</url-pattern>
    </servlet-mapping>

             現在可以嘗試使用你創建的HTML表單上傳文件。當你訪問http://localhost:8080/UploadFile.htm,瀏覽器里將會顯示如下效果,您可以從本地上傳你想要上傳的任何文件。

             如果您的servlet腳本運行成功,您的文件上傳在c:"apache-tomcat-5.5.29"webapps"data"directory文件夾。

    posted on 2011-03-23 08:52 jack zhai 閱讀(3805) 評論(0)  編輯  收藏 所屬分類: 翻譯


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲色欲或者高潮影院| 久久精品国产精品亚洲艾草网美妙| 亚洲高清国产拍精品26U| 一个人看的免费视频www在线高清动漫| 夜夜爽免费888视频| 亚洲熟妇自偷自拍另欧美| 大学生一级毛片免费看| 亚洲成_人网站图片| 亚洲精品在线电影| 99xxoo视频在线永久免费观看| 在线免费视频一区| 亚洲欧美日韩自偷自拍| 日韩免费视频在线观看| 无人视频免费观看免费视频| 99视频在线看观免费| 亚洲视频欧洲视频| 一二三四在线观看免费高清中文在线观看| 亚洲黄色一级毛片| 欧美最猛性xxxxx免费| 亚洲精品无码成人AAA片| 亚洲喷奶水中文字幕电影 | 亚洲另类自拍丝袜第五页| 波多野结衣久久高清免费| 免费大片黄在线观看| 亚洲精品中文字幕乱码三区| 三年片在线观看免费大全电影| 亚洲三级中文字幕| 日韩免费电影网址| 亚洲黄色在线观看网站| 成年性羞羞视频免费观看无限| 无码天堂亚洲国产AV| 亚洲国产精品无码久久久秋霞2 | 和日本免费不卡在线v| 亚洲av日韩综合一区久热| 亚洲午夜无码片在线观看影院猛| 光棍天堂免费手机观看在线观看| 亚洲啪啪免费视频| 怡红院亚洲怡红院首页| 猫咪www免费人成网站| 亚洲人成网站影音先锋播放| 免费看少妇高潮成人片|