<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)  編輯  收藏 所屬分類: 翻譯


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


    網站導航:
     
    主站蜘蛛池模板: 亚洲第一区视频在线观看| 久久亚洲精品无码gv| 啦啦啦高清视频在线观看免费| 精品四虎免费观看国产高清午夜| 亚洲av无码专区在线播放 | 亚洲成人免费网站| 久久亚洲精品国产精品婷婷| 亚洲欧洲日产国码一级毛片| 免费观看激色视频网站bd| 自拍偷自拍亚洲精品偷一| 亚洲AV无码国产精品色午友在线| 又粗又大又黑又长的免费视频| 一级毛片视频免费| 亚洲免费视频观看| 国产亚洲精品AA片在线观看不加载| 51在线视频免费观看视频| 羞羞漫画登录页面免费| 亚洲欧洲精品久久| 亚洲精品A在线观看| 欧美日韩国产免费一区二区三区| 亚洲精品偷拍视频免费观看| 亚洲综合久久一本伊伊区| 亚洲熟妇中文字幕五十中出| 在线观看无码的免费网站| 日本视频免费高清一本18| 亚洲精华国产精华精华液网站| 在线观看H网址免费入口| 日本一区二区三区在线视频观看免费| 亚洲资源在线观看| 亚洲高清无码专区视频| 一二三四免费观看在线电影| 免费黄网站在线观看| 黄网站色成年片大免费高清| 伊人久久亚洲综合影院首页| 国产免费不卡v片在线观看| 美女网站在线观看视频免费的| 亚洲欧美国产国产综合一区| 亚洲伦理一二三四| 久久精品7亚洲午夜a| 亚洲日韩在线观看| 日韩高清在线高清免费|