精彩的人生

          好好工作,好好生活

          BlogJava 首頁 新隨筆 聯系 聚合 管理
            147 Posts :: 0 Stories :: 250 Comments :: 0 Trackbacks

          這里用到了一個開源的包commons-fileupload.jar,事實證明這個包十分好用

           

          uploadPhoto.jsp:
          <%@ page contentType="text/html; charset=GBK" %>
          <html>
          <head>
          <title>
          upload
          </title>


          </head>
          <body bgcolor="#ffffff">
          <h1>
          <%
          if(request.getAttribute("msg")==null)
          {//提示信息
          }
          else{
          %>
          <%=(String)request.getAttribute("msg")%>
          <%
          }

          %>
          </h1>
          <form action="photoImg.jsp" id="frm" encType="multipart/form-data"  method="post">
          <br/><br/>
            
          <input type="FILE" name="FILE1" id="myFilename" size="50"/>
          <input type="submit" name="Submit" value="Submit" />
          <input type="reset" value="Reset"/>
          </form>
          </body>
          </html>

          注意:這個form必須寫上encType="multipart/form-data" 來表明上傳文件。并且,這個form中不能用隱藏變量來傳遞參數。就是說寫一個<input type = hidden name=tmp>在下一個頁面或者action中用request.getParameter是取不到的。

           

           

          photoImg.jsp:

          <%@ page contentType="text/html; charset=GBK" %>
          <%@ page import="java.util.*" %>
          <%@ page import="java.awt.*" %>
          <html>
          <head>
          <title>
          upload
          </title>
          </head>
          <body bgcolor="#ffffff">

          <%
                  GPhoto photo 
          = new GPhoto();
                  request 
          = photo.uploadImage(request);
          %>

          <jsp:forward page="uploadPhoto.jsp">
          </jsp:forward>
          </body>
          </html>

          uploadImage()是這樣實現的:
          public static HttpServletRequest uploadImage(HttpServletRequest request)
                      
          throws Exception {

                  DiskFileUpload fileUpload 
          = new DiskFileUpload();

                  
          //設置允許用戶上傳文件大小,單位:字節
                  fileUpload.setSizeMax(8388608);

                  
          //設置最多允許在內存中存儲的數據,單位:字節
                  fileUpload.setSizeThreshold(1024000);

                  
          //設置一旦文件大小超過getSizeThreshold()的值時數據存放在硬盤的目錄
                  
          //在進行文件上傳的時候文件先存再內存中,然后才會存到server上,但是如果內存放不下那么大的文件
                  
          //就必須用硬盤上的 一個臨時文件夾來保存這個文件的部分,然后轉存
                  
          //現在默認的文件存儲的路徑是
                  String tmp = “c:/temp/”;

                  
          //設置上傳文件的存儲路徑,如果不設置這個路徑,這個文件將保存在
          //server的根目錄下(如tomcat或者resin的根目錄)
                  String uploadPath = “c:/”;

                  fileUpload.setRepositoryPath(tmp);

                  String strType 
          = "";

                  
          try {
                      List fileItems 
          = fileUpload.parseRequest(request);

                      Iterator iterator 
          = fileItems.iterator();

                      
          while(iterator.hasNext()) {

                          FileItem fileItem 
          = (FileItem)iterator.next();

                          
          //文件域的表單信息
                          if (!fileItem.isFormField()) {
                              String strName 
          = fileItem.getName();

                              
          long size = fileItem.getSize();
                              
          if((strName==null||strName.equals("")) && size==0)
                                  
          continue;

                                  File savedFile 
          = new File(uploadPath + strName);

                                  fileItem.write(savedFile);

                                  request.setAttribute(
          "msg","save file successful!");
                          }

                      }

                      
          if(request.getAttribute("msg")== null)
                      
          {
                          request.setAttribute(
          "msg","save file failed!");
                      }

                  }
           catch (Exception ex) {
                      request.setAttribute(
          "msg","save file failed!");
                  }

                  
          return request;
              }


          OK,文件保存了

           

          我在windows下傳文件很正常,但是在linux下,當文件過大,需要使用臨時文件夾的時候出現問題,可能是文件路徑的問題。
          posted on 2005-11-27 12:56 hopeshared 閱讀(7567) 評論(1)  編輯  收藏 所屬分類: Java

          Feedback

          # re: 2005.6.12 使用jsp上傳文件 2006-10-12 15:47 EYEQQ
          uploadImage()寫到哪里去?
          Servlet?可不可以說細點?  回復  更多評論
            

          主站蜘蛛池模板: 玉门市| 壶关县| 岳阳市| 徐汇区| 繁峙县| 苏尼特左旗| 扶绥县| 瓮安县| 琼海市| 安远县| 信丰县| 邵东县| 舒兰市| 敦化市| 绥中县| 博乐市| 宁陵县| 文化| 顺昌县| 巴楚县| 灵璧县| 阳原县| 舒城县| 从江县| 屏边| 凤台县| 淮阳县| 兴业县| 伊吾县| 英吉沙县| 多伦县| 九江市| 宁都县| 莲花县| 宁阳县| 峡江县| 靖江市| 建德市| 饶阳县| 兴仁县| 康平县|