Web的文件上傳

1、上傳java

一、上傳通常都是使用表單,須要添加如下部分
        * method="post"
        * enctype="multipart/form-data"
        * 表單中須要添加文件表單項:<input type="file" name="xxx" />緩存

<form action="xxx" method="post" enctype="multipart/form-data">
  用戶名;<input type="text" name="username"/><br/>
  照 片:<input type="file" name="zhaoPian"/><br/>
  <input type="submit" value="上傳"/>
</form>

二、上傳會讓request.getParametere("xxx")方法失效,此時將上傳表單項分爲普通表單項和文件表單項。服務器

           普通表單項:
            > 1個頭:Content-Disposition:包含name="xxxx",即表單項名稱。
            > 體就是表單項的值
           文件表單項:
            > 2個頭:
              * Content-Disposition:包含name="xxxx",即表單項名稱;還有一個filename="xxx",表示上傳文件的名稱
              * Content-Type:它是上傳文件的MIME類型,post

                                          例如:image/pjpeg,表示上傳的是圖片,圖上中jpg擴展名的圖片。
              > 體就是上傳文件的內容。編碼

三、上傳步驟code

        準備工做:導入commons-fileupload.jar, commons-io.jar倆個包orm

         1). 建立工廠:DiskFileItemFactory factory = new DiskFileItemFactory();
         2). 建立解析器:ServletFileUpload sfu = new ServletFileUpload(factory);
         3). 使用解析器來解析request,獲得FileItem集合:List<FileItem> fileItemList = sfu.parseRequest(request);圖片

                                          注意:List的順序與表單項從上到下的順序一致。ip

          FileItem經常使用的方法:
                * boolean isFormField():是否爲普通表單項!返回true爲普通表單項,若是爲false即文件表單項!
                * String getFieldName():返回當前表單項的名稱;
                * String getString(String charset):傳入編碼,返回表單項的值;
                * String getName():返回上傳的文件名稱
                * long getSize():返回上傳文件的字節數
                * InputStream getInputStream():返回上傳文件對應的輸入流
                * String getContentType():獲取上傳文件類型
                * void write(File destFile):把上傳的文件內容保存到指定的文件中。get

//建立將要保存文件的文件流
	        File file=new File("C:/Users/13928/Desktop/圖標.jpg");	
		item2.write(file);	//將文件流寫入服務器

四、上傳文件的大小限制

  •     單個文件大小限制

    > sfu.setFileSizeMax(100*1024):限制單個文件大小爲100KB,必須在解析開始以前調用!
    > 若是上傳的文件超出限制,在parseRequest()方法執行時,會拋出異常!FileUploadBase.FileSizeLimitExceededException

  •    整個請求全部數據大小限制

    > sfu.setSizeMax(1024 * 1024):限制整個表單大小爲1M,必須在解析開始以前調用!
    > 若是上傳的文件超出限制,在parseRequest()方法執行時,會拋出異常!FileUploadBase.SizeLimitExceededException

五、緩存大小與臨時目錄                  * 緩存大小:上傳文件超出多大,才向硬盤保存!默認爲10KB                  * 臨時目錄:向硬盤的什麼目錄保存                   設置緩存大小與臨時目錄:new DiskFileItemFactory(20*1024, new File("E:/temp"));

相關文章
相關標籤/搜索