posts - 0,  comments - 6,  trackbacks - 0

          文件上傳范例

          本文采用MyEclipse IDE8.5版)作為開(kāi)發(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會(huì)自動(dòng)將其加入BuildPath

          第三步:在WebRoot目錄上單擊右鍵,然后依次單擊 New —— JSP,在WebRoot目錄下創(chuàng)建文件上
          傳表單頁(yè)面,取名
          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="開(kāi)始上傳">

          </form>

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

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


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


          單擊Finesh按鈕,將會(huì)創(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>

          第六步:打開(kāi)servlets.SimpleUpload.java,將doGet方法中自動(dòng)生成的代碼修改如下:

          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");

          // 判斷是否多媒體文件上傳請(qǐng)求表單

          boolean isMultipart = ServletFileUpload.isMultipartContent(request);

          if (!isMultipart) {

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

          return;

          }

          // 如果在應(yīng)用根目錄下沒(méi)有用于存儲(chǔ)上傳文件的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)存中,否則保存在磁盤(pán)臨時(shí)文件夾

          factory.setSizeThreshold(1024 * 50);

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

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

          if (!tempDir.exists())

          tempDir.mkdir();

          factory.setRepository(tempDir);

          ServletFileUpload uploader = new ServletFileUpload(factory);

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

          uploader.setFileSizeMax(50 * 1024);

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

          uploader.setSizeMax(50 * 1024 * 3);

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

          uploader.setHeaderEncoding("UTF-8");

          // 解析請(qǐng)求

          List<FileItem> list = null;

          try {

          list = uploader.parseRequest(request);

          catch (FileUploadBase.FileSizeLimitExceededException e) {

          // 注意,1.2.1版本沒(méi)有getFieldNamegetFileName方法

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

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

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

          return;

          catch (FileUploadBase.SizeLimitExceededException e) {

          out.print("請(qǐng)求被拒絕,因?yàn)檎?qǐng)求消息體的尺寸(" + e.getActualSize() + ")超出了限制的最大尺寸("

          + e.getPermittedSize() + "");

          return;

          catch (FileUploadException e1) {

          out.print(e1.getMessage());

          return;

          }

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

          for (FileItem item : list) {

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

          if (item.isFormField()) {

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

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

          else {

          // 將臨時(shí)文件保存到指定目錄

          out.print("  文件名稱(chēng):" + 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下,在瀏覽器地址欄鍵入如下地址打開(kāi)文件上傳表單頁(yè)面:

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


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



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

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

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

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

          只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          <2025年5月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          留言簿(2)

          我參與的團(tuán)隊(duì)

          文章檔案(22)

          搜索

          •  

          最新評(píng)論

          主站蜘蛛池模板: 沁阳市| 中宁县| 柳林县| 吉林省| 炉霍县| 台南县| 海城市| 天台县| 长春市| 米泉市| 安康市| 井研县| 高要市| 静海县| 永川市| 丹东市| 雷波县| 泽普县| 岳西县| 唐河县| 南投县| 瑞金市| 茌平县| 正阳县| 威信县| 玉屏| 朝阳县| 公主岭市| 成都市| 连平县| 清镇市| 淮阳县| 通许县| 万载县| 芜湖县| 晋州市| 且末县| 巩义市| 玉龙| 尉氏县| 闽侯县|