posts - 0,  comments - 6,  trackbacks - 0

          文件上傳范例

          本文采用MyEclipse IDE8.5版)作為開發(fā)工具,Apache Tomcat 6.0.18作為Servlet容器,使用谷歌瀏覽
          器進(jìn)行示范。

          第一步:依次點(diǎn)擊  File——New —— Web Project,創(chuàng)建web工程,工程名在這里取名demo,其它默
          認(rèn)。

          第二步:復(fù)制commons-fileupload-1.2.2.jarcommons-io-1.4.jar,在PackageExplorer(工程瀏覽器)中,
          將它們拷貝到
          WebRoot\WEB-INF\lib目錄下,MyEclipse會自動將其加入BuildPath

          第三步:在WebRoot目錄上單擊右鍵,然后依次單擊 New —— JSP,在WebRoot目錄下創(chuàng)建文件上
          傳表單頁面,取名
          simpleUpload.jsp,在body標(biāo)簽內(nèi)添加如下表單代碼:

          <form action="<%=request.getContextPath()%>/servlet/SimpleUpload" 
          enctype="multipart/form-data" method="post">

          文本1<input type="text" name="text1" value="文本1"><br>

          文件2<input type="text" name="text2" value="文本2"><br>

          文件1<input type="file" name="file1"><br>

          文件2<input type="file" name="file2"><br>

          文件2<input type="file" name="file3"><br>

          <input type="submit" value="開始上傳">

          </form>

          第四步:在src目錄上單擊右鍵,然后依次單擊 New —— Package,創(chuàng)建名為servletspackage

          第五步:在剛創(chuàng)建的 servlets 包上單擊右鍵,然后依次單擊 New —— Servlet,打開如下圖窗口:


          如圖,為name屬性輸入SimpleUpload,點(diǎn)選doPost方法,其它默認(rèn)即可,單擊next按鈕打開如下圖窗口:


          單擊Finesh按鈕,將會創(chuàng)建servlets.SimpleUpload.java,并在WebRoot\WEB-INF\web.xml中添加如下代碼:

          <servlet>

              <servlet-name>SimpleUpload</servlet-name>

              <servlet-class>servlet.SimpleUpload</servlet-class>

          </servlet>

          <servlet-mapping>

              <servlet-name>SimpleUpload</servlet-name>

              <url-pattern>/servlet/SimpleUpload</url-pattern>

          </servlet-mapping>

          第六步:打開servlets.SimpleUpload.java,將doGet方法中自動生成的代碼修改如下:

          public class SimpleUpload extends HttpServlet {

          public void doPost(HttpServletRequest request, HttpServletResponse response)

          throws ServletException, IOException {

          PrintWriter out = response.getWriter();

          response.setContentType("text/html;charset=UTF-8");

          // 判斷是否多媒體文件上傳請求表單

          boolean isMultipart = ServletFileUpload.isMultipartContent(request);

          if (!isMultipart) {

          out.println("對不起,當(dāng)前請求不是一個多媒體文件上傳請求!");

          return;

          }

          // 如果在應(yīng)用根目錄下沒有用于存儲上傳文件的simpleUplaodDir目錄,創(chuàng)建該目錄

          String path = getServletContext().getRealPath("/simpleUploadDir");

          File uploadDir = new File(path);

          if (!uploadDir.exists())

          uploadDir.mkdir();

          DiskFileItemFactory factory = new DiskFileItemFactory();

          // 小于指定尺寸(默認(rèn)10KB)的文件直接保存在內(nèi)存中,否則保存在磁盤臨時文件夾

          factory.setSizeThreshold(1024 * 50);

          // 設(shè)置處理上傳文件時保存臨時文件的臨時文件夾,沒有指定則采用系統(tǒng)默認(rèn)臨時文件夾

          File tempDir = new File(getServletContext().getRealPath("/temp"));

          if (!tempDir.exists())

          tempDir.mkdir();

          factory.setRepository(tempDir);

          ServletFileUpload uploader = new ServletFileUpload(factory);

          // 設(shè)置單個上傳文件的最大尺寸限制,參數(shù)為以字節(jié)為單位的long型數(shù)字

          uploader.setFileSizeMax(50 * 1024);

          // 設(shè)置整個請求上傳數(shù)據(jù)的最大尺寸限制,參數(shù)為以字節(jié)為單位的long型數(shù)字

          uploader.setSizeMax(50 * 1024 * 3);

          // 設(shè)置字符編碼

          uploader.setHeaderEncoding("UTF-8");

          // 解析請求

          List<FileItem> list = null;

          try {

          list = uploader.parseRequest(request);

          catch (FileUploadBase.FileSizeLimitExceededException e) {

          // 注意,1.2.1版本沒有getFieldNamegetFileName方法

          out.print("請求被拒絕,因?yàn)楸韱斡?/font>" + e.getFieldName() + "上傳的文件"

          + e.getFileName() + "的大小(" + e.getActualSize()

          ")超出了單個文件限制的最大尺寸(" + e.getPermittedSize() + "");

          return;

          catch (FileUploadBase.SizeLimitExceededException e) {

          out.print("請求被拒絕,因?yàn)檎埱笙Ⅲw的尺寸(" + e.getActualSize() + ")超出了限制的最大尺寸("

          + e.getPermittedSize() + "");

          return;

          catch (FileUploadException e1) {

          out.print(e1.getMessage());

          return;

          }

          // 循環(huán)處理每一個文件項(xiàng)

          for (FileItem item : list) {

          out.print("表單域名:" + item.getFieldName());

          if (item.isFormField()) {

          // 處理普通表單域,假設(shè)jsp頁面設(shè)置字符編碼也是UTF-8

          out.print("  表單域值:" + item.getString("UTF-8") + "<br/>");

          else {

          // 將臨時文件保存到指定目錄

          out.print("  文件名稱:" + item.getName() + "<br/>");

          String fileName = item.getName();

          String filepath = uploadDir.getAbsolutePath() + "/" + fileName;

          try {

          item.write(new File(filepath));

          catch (Exception e) {

          out.print(e.getMessage());

          return;

          }

          out.print("<img src=\"" + request.getContextPath()

          "/simpleUploadDir/" + fileName + "\" />" + "<br/>");

          }

          }

          out.flush();

          out.close();

          }

          }

          demo工程發(fā)布到tomcat下,在瀏覽器地址欄鍵入如下地址打開文件上傳表單頁面:

          http://127.0.0.1:8080/demo/simpleUpload.jsp


          填寫表單,單擊開始上傳按鈕,正常情況下顯示結(jié)果如圖:



          鄭州蜂鳥科技有限公司 申林 QQ:38185398  鄭州軟件開發(fā)興趣小組群:38236716

          學(xué)軟件開發(fā),到蜂鳥科技!超強(qiáng)的師資力量 、完善的課程體系 、超低的培訓(xùn)價格 、真實(shí)的企業(yè)項(xiàng)目。

          地址:鄭州市文化路豐產(chǎn)路口東50米豐產(chǎn)路21號SOHO世紀(jì)城西塔20樓F
          電話:0371-63839606  手機(jī):13838505572(申老師) 13673990036 (許老師)
          QQ: 1073422643  1群:47614738 2群:108157678 
          網(wǎng)址:www.ntcsoft.com

          posted on 2010-09-03 23:53 whistler 閱讀(963) 評論(0)  編輯  收藏

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


          網(wǎng)站導(dǎo)航:
           
          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          留言簿(2)

          我參與的團(tuán)隊

          文章檔案(22)

          搜索

          •  

          最新評論

          主站蜘蛛池模板: 手游| 喀喇沁旗| 苏州市| 景洪市| 简阳市| 神池县| 屯留县| 井冈山市| 邯郸县| 东阿县| 略阳县| 菏泽市| 都昌县| 浦江县| 甘孜县| 沙雅县| 六安市| 勃利县| 铁岭市| 柏乡县| 淳化县| 孟州市| 遂溪县| 乌审旗| 佳木斯市| 察哈| 宜宾市| 大庆市| 澄迈县| 阜阳市| 禄劝| 韶关市| 襄汾县| 通城县| 庆安县| 东莞市| 旺苍县| 温泉县| 慈溪市| 修水县| 罗山县|