文件上傳下載

          1.myapp/index.html
          <html>
          <head>
          文件操作
          <iframe id="iframefile" scrolling="no" frameborder="0" width="100%" src="/myapp/fileUpload.jsp"></iframe>
          </head>
          </html>
          2.myapp/fileUpload.jsp
          <%@ page language="java" contentType="text/html; charset=UTF-8"
          %>
          <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
          <%@ page import="test.UploadServlet"%>
          <%@ page import="java.io.File"%>

          <%@ page import="java.io.FileInputStream"%>
          <%@ page import="java.net.URLEncoder"%>
          <html>

          <head>

              
          <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

              
          <title>文件上傳</title>

          </head>
          <%
              String cztype
          =request.getParameter("cztype");//操作類型
              if(cztype!=null && cztype.equals("del"))//文件刪除
                  String temppath = request.getParameter("path");
                  
          if(temppath!=null && !temppath.equals("")){
                      File file 
          = new File(temppath);
                      file.delete();
                  }

              }

              
          if(cztype!=null && cztype.equals("down"))//文件下載
                  String downpath=request.getParameter("path");
                  String filename
          =request.getParameter("filename");
                  
          //String filename=new String(request.getParameter("filename").getBytes("ISO8859-1"),"UTF-8");
                  response.setCharacterEncoding("UTF-8");
                  response.setContentType(
          "application/x-download");
                  response.addHeader(
          "Content-Disposition","attachment;filename=\"" + URLEncoder.encode(filename, "UTF-8") + "\"");
                  
          try{
                      java.io.OutputStream os 
          = response.getOutputStream();
                      java.io.FileInputStream fis 
          = new FileInputStream(downpath);
                      
          byte[] b = new byte[1024];
                      
          int i=0;
                      
          while((i=fis.read(b))>0){
                          os.write(b,
          0,i);
                      }

                      os.flush();
                      os.close();
                      fis.close();
                      out.clear();
                      out 
          = pageContext.pushBody();
                  }
          catch(Exception e){
                      e.printStackTrace();
                  }

              }

              
              String path 
          = getServletContext().getRealPath(""+ "//uploadFolder//";
              File filepath 
          = new File(path);
              File[] fileArray 
          = filepath.listFiles();
                  
          %>

          <body leftmargin=0 rightmargin=0 topmargin=0>
          <form method = "post" id = "upload" action ="/myapp/servlet/UploadServlet" enctype="multipart/form-data">
              
          <table width="100%" border="1">
                  
          <tr><td height="20" colspan="2">附件上傳(下載時請右鍵"目標另存為")</td></tr> 
                  
          <tr><td width="50%">文件名</td><td width="50%">操作</td></tr>
                  
          <%
                      
          int height = 3//默認表格行數
                      if(fileArray!=null){
                          height 
          += fileArray.length;
                          
          for(int i=0;i<fileArray.length;i++){
                              File file 
          = fileArray[i];                    
                              String urlpath
          ="http://"+request.getLocalAddr()+":"+request.getLocalPort()+"/myapp/uploadFolder/"+file.getName();
                              
          %>    
                              
          <tr><td><a href="/myappp/fileUpload.jsp?cztype=down&path=<%=URLEncoder.encode(file.getAbsolutePath(),"utf-8")%>&filename=<%=URLEncoder.encode(file.getName(),"utf-8")%>") target="_blank"><%=file.getName()%></a></td><td><a href="/myapp/fileUpload.jsp?cztype=del&path=<%=file.getAbsolutePath()%>">刪除</a></td></tr>
                          
          <%}

                      }
                      
                  
          %>
                  
          <p>
                  
          <tr>        
                      
          <td><input type = "file" id = "uploadFile" name = "uploadFile"></td>
                      
          <td><input type = "button" onclick="if(upload.uploadFile.value==null || upload.uploadFile.value=='') alert('請選擇文件!'); else upload.submit();" value = "上傳"></td>
                  
          </tr>
              
          </table>
          </form>
              
          <input type="hidden" name="fileuploadheight" value="<%=height%>">
          </body>

          <script>
              window.parent.document.getElementById(
          "iframefile").style.height=document.all("fileuploadheight").value * 20 + 20//自動調整iframe大小
          </script>
          </html>

          3.myapp/WEB-INF/web.xml
          <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
          <web-app>
              
          <servlet>
                  
          <servlet-name>UploadServlet</servlet-name>
                  
          <servlet-class>
                      test.UploadServlet
                  
          </servlet-class>
              
          </servlet>

              
          <servlet-mapping>
                      
          <servlet-name>UploadServlet</servlet-name>
                      
          <url-pattern>/servlet/UploadServlet</url-pattern>
              
          </servlet-mapping>
          </web-app>

          4.test.UploadServlet
          package test;

          import java.io.File;
          import java.io.IOException;
          import java.util.ArrayList;
          import java.util.HashMap;
          import java.util.Iterator;
          import java.util.List;
          import java.util.Map;

          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.FileItemFactory;
          import org.apache.commons.fileupload.disk.DiskFileItemFactory;
          import org.apache.commons.fileupload.servlet.ServletFileUpload;



          public class UploadServlet extends HttpServlet{
              
              
          public void doPost(HttpServletRequest request, HttpServletResponse response)
                 
          throws ServletException, IOException {
                Map parameters 
          = new HashMap();
                
          try {

                    FileItemFactory factory 
          = new DiskFileItemFactory();
                    ServletFileUpload fu 
          = new ServletFileUpload(factory);
                    fu.setHeaderEncoding(
          "UTF-8");
                    fu.setSizeMax(
          4194304);
                    
                    
          // 得到所有的文件,以及其它請求參數:
                     List fileItems = fu.parseRequest(request);
                     Iterator i 
          = fileItems.iterator();
                     
          // 依次處理每一個文件,以及請求參數:
                     while(i.hasNext()) {
                         FileItem fi 
          = (FileItem)i.next();

                         
          // 如果是文件項,則保存文件到上傳目錄
                         if (!fi.isFormField()) {
                             
          // 獲得文件名,這個文件名包括路徑:
                             String fileName = fi.getName();

                             
          long filesize = fi.getSize();
                             System.out.println(
          "上傳的文件名為!!!"+fileName + " size : " + filesize);

                             
          // 寫入文件
                             fileName = fileName.substring(fileName.lastIndexOf("\\"));
                             String conPath 
          = getServletContext().getRealPath("");
                             File filepath
          = new File(conPath + "//uploadFolder//");                
                             File file 
          = new File(filepath+"//"+fileName);
                             
          if(!filepath.exists()){
                                 filepath.mkdir();
                             }

                             
          if(file.exists()){
                                 file.delete();
                             }

                             fi.write(file);
                         }

                         
          else //如果是請求參數,則保存到HashMap中
                             String name = fi.getFieldName();
                             String value 
          = fi.getString();
                             parameters.put(name, value);
                             System.out.println(parameters);
                         }

                     }

                     response.sendRedirect(
          "/myapp/fileUpload.jsp");
                }

                
          catch(Exception ex) {
                    System.out.println(
          "上傳文件時出錯!!!");
                    ex.printStackTrace();
                }

               }

              
          }


          5.myapp/WEB-INF/classes/commons-fileupload-1.2.1.jar

          6.myapp/WEB-INF/classes/commons-io-1.4.jar

          posted on 2009-02-26 17:11 software5168 閱讀(317) 評論(0)  編輯  收藏


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


          網站導航:
           
          <2009年2月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          1234567

          導航

          統計

          常用鏈接

          留言簿(3)

          隨筆分類

          隨筆檔案

          收藏夾

          JAVA學習網站

          綜合

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 丹巴县| 宁强县| 普洱| 泸定县| 洛南县| 上犹县| 县级市| 玛纳斯县| 隆德县| 锦屏县| 余江县| 巴林右旗| 谢通门县| 唐河县| 太谷县| 洪湖市| 娄烦县| 黔江区| 临沭县| 八宿县| 丰镇市| 凤山市| 商河县| 贵港市| 且末县| 金塔县| 阳原县| 平乡县| 汾西县| 密山市| 岳西县| 涡阳县| 丹阳市| 柳河县| 桦甸市| 乡城县| 南昌市| 聂拉木县| 东兴市| 云霄县| 灵石县|