Servlet+Jsp實現圖片或文件的上傳功能具體思路及代碼_JSP教程

      編輯Tag賺U幣

      推薦:json實現jsp分頁實例介紹(附效果圖)
      json的既簡單易懂,又傳輸迅速。并且能和javascript很好的融為一體;在不需要添加jar的前提下,能夠很好完成jsp分頁問題,接下來為大家介紹下如何實現

      現在不管是博客論壇還是企業辦公,都離不開資源的共享。通過文件上傳的方式,與大家同分享,從而達到大眾間廣泛的溝通和交流,我們既可以從中獲得更多的知識和經驗,也能通過他人的反饋達到自我改進和提升的目的。

      下面我就為大家介紹 web項目中的這一上傳功能,那么文件是如何從本地發送到服務器的呢?看我慢慢道來:
      首先,我們創建一個新的web工程,在工程的WebRoot目錄下新建一個upload文件夾,這樣當我們將該工程部署到服務器上時,服務器便也生成個upload文件夾,用來存放上傳的資源。

      然后,在WebRoot目錄下新建一個jsp文件,主要實現的作用就是選擇上傳的文件,提交至servlet來進行處理
      詳細代碼如下:一個form將文件信息通過post方式傳送到指定的servlet
      復制代碼 代碼如下:www.wf0088.com

      <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
      <%
      String path = request.getContextPath();
      String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
      %>
      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
      <html>
      <head>
      <base href="<%=basePath%>">
      <title>My JSP 'upload.jsp' starting page</title>
      <meta http-equiv="<meta http-equiv="cache-control" content="no-cache">
      <meta http-equiv="expires" content="0">
      <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
      <meta http-equiv="description" content="This is my page">
      <!--
      <link rel="stylesheet" type="text/
      css" href="styles.css">
      -->
      </head>
      <body>
      <form action="/upload/UpLoad" method="post" enctype="multipart/form-data">
      請選擇上傳的圖片或文件:<input type="file" name="fileName"/><input type="submit" value="上傳"/>
      </form>
      </body>
      </html>

      可以看到,我們將數據提交到工程下的upload/UpLoad。
      之后,我們就來編寫這個servlet——UpLoad.java
      復制代碼 代碼如下:www.wf0088.com

      package load;
      import java.io.File;
      import java.io.IOException;
      import java.io.PrintWriter;
      import java.util.List;
      import javax.servlet.ServletContext;
      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.FileUploadException;
      import org.apache.commons.fileupload.disk.DiskFileItemFactory;
      import org.apache.commons.fileupload.servlet.ServletFileUpload;
      public class UpLoad extends HttpServlet {
      @SuppressWarnings("unchecked")
      @Override
      protected void service(HttpServletRequest req, HttpServletResponse resp)
      throws ServletException, IOException {
      req.setCharacterEncoding("utf-8");
      resp.setContentType("text/html;charset=utf-8");
      //為解析類提供配置信息
      DiskFileItemFactory factory = new DiskFileItemFactory();
      //創建解析類的實例
      ServletFileUpload sfu = new ServletFileUpload(factory);
      //開始解析
      sfu.setFileSizeMax(1024*400);
      //每個表單域中數據會封裝到一個對應的FileItem對象上
      try {
      List<FileItem> items = sfu.parseRequest(req);
      //區分表單域
      for (int i = 0; i < items.size(); i++) {
      FileItem item = items.get(i);
      //isFormField為true,表示這不是文件上傳表單域
      if(!item.isFormField()){
      ServletContext sctx = getServletContext();
      //獲得存放文件的物理路徑
      //upload下的某個文件夾 得到當前在線的用戶 找到對應的文件夾

      String path = sctx.getRealPath("/upload");
      System.out.println(path);
      //獲得文件名
      String fileName = item.getName();
      System.out.println(fileName);
      //該方法在某些平臺(操作系統),會返回路徑+文件名
      fileName = fileName.substring(fileName.lastIndexOf("/")+1);
      File file = new File(path+"\\"+fileName);
      if(!file.exists()){
      item.write(file);
      //將上傳圖片的名字記錄到數據庫中

      resp.sendRedirect("/upload/ok.html");
      }
      }
      }
      } catch (Exception e) {
      e.printStackTrace();
      }

      }
      }

      因為已對 代碼做了詳細的注釋,所以相信大家也能基本上傳的這個過程。要注意的一點是解析實例空間大小的設置。我們希望上傳的文件不會是無限大,因此,設置
      復制代碼 代碼如下:www.wf0088.com

      .setFileSizeMax(1024*400);

      在這兒我們也可以將其設置成一個條件,當文件大于最大值時向頁面 提交錯誤提示。此外,也可以讀取選擇文件的后綴來篩選出可以上傳的類型。這些代碼大家自己擴展,不再細談。

      通過servlet, 將正確的文件傳送到服務端的upload文件夾中。這兒要注意,如果以后將工程從tomcat移除后,這些文件就會被自動刪除。

      上傳結束之后,使頁面轉到上傳成功頁面ok.html。 當用戶看到此頁面時,說明你已實現文件的上傳功能。

      分享:從textarea中獲取數據之后按原樣顯示實現代碼
      從textarea中獲取數據,按原樣顯示在某些特殊的情況下還是比較使實用的,下面為大家分享下實現代碼,感興趣的朋友可以參考下,希望對你有所幫助

      來源:模板無憂//所屬分類:JSP教程/更新時間:2013-04-28
      相關JSP教程