亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁(yè) > 編程 > JSP > 正文

Jsp+Servlet實(shí)現(xiàn)文件上傳下載 文件上傳(一)

2024-09-05 00:23:33
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

文件上傳和下載功能是Java Web必備技能,很實(shí)用。
本文使用的是Apache下的著名的文件上傳組件
org.apache.commons.fileupload 實(shí)現(xiàn)
下面結(jié)合最近看到的一些資料以及自己的嘗試,先寫第一篇文件上傳。后續(xù)會(huì)逐步實(shí)現(xiàn)下載,展示文件列表,上傳信息持久化等。

廢話少說(shuō),直接上代碼

第一步,引用jar包,設(shè)置上傳目錄

commons-fileupload-1.3.1.jar
commons-io-2.4.jar

上傳目錄:WEB-INF/tempFiles和WEB-INF/uploadFiles

第二步,編寫JSP頁(yè)面

<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <html> <head>  <title>文件上傳測(cè)試</title> </head> <body> <form method="POST" enctype="multipart/form-data" action="<%=request.getContextPath()%>/UploadServlet">  文件: <input type="file" name="upfile"><br/>  <br/>  <input type="submit" value="上傳"> </form> <c:if test="${not empty errorMessage}">  <input type="text" id="errorMessage" value="${errorMessage}" style="color:red;" disabled="disabled"> </c:if> </body> </html> 

第三步,編寫Servlet,處理文件上傳的核心

package servlet;  import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileUploadBase; import org.apache.commons.fileupload.FileUploadException; import org.apache.commons.fileupload.ProgressListener; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload;  import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.Calendar; import java.util.Iterator; import java.util.List; import java.util.UUID;  /**  * 處理文件上傳  *  * @author xusucheng  * @create 2017-12-27  **/ @WebServlet("/UploadServlet") public class UploadServlet extends HttpServlet {  @Override  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {   //設(shè)置文件上傳基本路徑   String savePath = this.getServletContext().getRealPath("/WEB-INF/uploadFiles");   //設(shè)置臨時(shí)文件路徑   String tempPath = this.getServletContext().getRealPath("/WEB-INF/tempFiles");   File tempFile = new File(tempPath);   if (!tempFile.exists()) {    tempFile.mkdir();   }    //定義異常消息   String errorMessage = "";   //創(chuàng)建file items工廠   DiskFileItemFactory factory = new DiskFileItemFactory();   //設(shè)置緩沖區(qū)大小   factory.setSizeThreshold(1024 * 100);   //設(shè)置臨時(shí)文件路徑   factory.setRepository(tempFile);   //創(chuàng)建文件上傳處理器   ServletFileUpload upload = new ServletFileUpload(factory);   //監(jiān)聽(tīng)文件上傳進(jìn)度   ProgressListener progressListener = new ProgressListener() {    public void update(long pBytesRead, long pContentLength, int pItems) {     System.out.println("正在讀取文件: " + pItems);     if (pContentLength == -1) {      System.out.println("已讀?。?" + pBytesRead + " 剩余0");     } else {      System.out.println("文件總大小:" + pContentLength + " 已讀?。?quot; + pBytesRead);     }    }   };   upload.setProgressListener(progressListener);    //解決上傳文件名的中文亂碼   upload.setHeaderEncoding("UTF-8");   //判斷提交上來(lái)的數(shù)據(jù)是否是上傳表單的數(shù)據(jù)   if (!ServletFileUpload.isMultipartContent(request)) {    //按照傳統(tǒng)方式獲取數(shù)據(jù)    return;   }    //設(shè)置上傳單個(gè)文件的大小的最大值,目前是設(shè)置為1024*1024字節(jié),也就是1MB   upload.setFileSizeMax(1024 * 1024);   //設(shè)置上傳文件總量的最大值,最大值=同時(shí)上傳的多個(gè)文件的大小的最大值的和,目前設(shè)置為10MB   upload.setSizeMax(1024 * 1024 * 10);    try {    //使用ServletFileUpload解析器解析上傳數(shù)據(jù),解析結(jié)果返回的是一個(gè)List<FileItem>集合,每一個(gè)FileItem對(duì)應(yīng)一個(gè)Form表單的輸入項(xiàng)    List<FileItem> items = upload.parseRequest(request);    Iterator<FileItem> iterator = items.iterator();    while (iterator.hasNext()) {     FileItem item = iterator.next();      //判斷jsp提交過(guò)來(lái)的是不是文件     if (item.isFormField()) {      errorMessage = "請(qǐng)?zhí)峤晃募?quot;;      break;     } else {      //文件名      String fileName = item.getName();      if (fileName == null || fileName.trim() == "") {       System.out.println("文件名為空!");      }      //處理不同瀏覽器提交的文件名帶路徑問(wèn)題      fileName = fileName.substring(fileName.lastIndexOf("//") + 1);      //文件擴(kuò)展名      String fileExtension = fileName.substring(fileName.lastIndexOf(".") + 1);      //判斷擴(kuò)展名是否合法      if (!validExtension(fileExtension)) {       errorMessage = "上傳文件非法!";       item.delete();       break;      }      //獲得文件輸入流      InputStream in = item.getInputStream();      //得到保存文件的名稱      String saveFileName = createFileName(fileName);      //得到文件保存路徑      String realFilePath = createRealFilePath(savePath, saveFileName);      //創(chuàng)建文件輸出流      FileOutputStream out = new FileOutputStream(realFilePath);      //創(chuàng)建緩沖區(qū)      byte buffer[] = new byte[1024];      int len = 0;      while ((len = in.read(buffer)) > 0) {       //寫文件       out.write(buffer, 0, len);      }      //關(guān)閉輸入流      in.close();      //關(guān)閉輸出流      out.close();      //刪除臨時(shí)文件 TODO      item.delete();      //將上傳文件信息保存到附件表中 TODO     }     }    } catch (FileUploadBase.FileSizeLimitExceededException e) {    e.printStackTrace();    request.setAttribute("errorMessage", "單個(gè)文件超出最大值?。?!");    request.getRequestDispatcher("pages/upload/upload.jsp").forward(request, response);    return;   } catch (FileUploadBase.SizeLimitExceededException e) {    e.printStackTrace();    request.setAttribute("errorMessage", "上傳文件的總的大小超出限制的最大值?。?!");    request.getRequestDispatcher("pages/upload/upload.jsp").forward(request, response);    return;   } catch (FileUploadException e) {    e.printStackTrace();    request.setAttribute("errorMessage", "文件上傳失?。。。?quot;);    request.getRequestDispatcher("pages/upload/upload.jsp").forward(request, response);    return;   }    request.setAttribute("errorMessage", errorMessage);   request.getRequestDispatcher("pages/upload/upload.jsp").forward(request, response);    }   @Override  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {   doGet(request, response);  }   private boolean validExtension(String fileExtension) {   String[] exts = {"jpg", "txt", "doc", "pdf"};   for (int i = 0; i < exts.length; i++) {    if (fileExtension.equals(exts[i])) {     return true;    }    }    return false;  }   private String createFileName(String fileName) {   return UUID.randomUUID().toString() + "_" + fileName;  }   /**   * 根據(jù)基本路徑和文件名稱生成真實(shí)文件路徑,基本路徑//年//月//fileName   *   * @param basePath   * @param fileName   * @return   */  private String createRealFilePath(String basePath, String fileName) {   Calendar today = Calendar.getInstance();   String year = String.valueOf(today.get(Calendar.YEAR));   String month = String.valueOf(today.get(Calendar.MONTH) + 1);     String upPath = basePath + File.separator + year + File.separator + month + File.separator;   File uploadFolder = new File(upPath);   if (!uploadFolder.exists()) {    uploadFolder.mkdirs();   }    String realFilePath = upPath + fileName;    return realFilePath;  } } 

第四步,測(cè)試

http://localhost:8080/helloweb/pages/upload/upload.jsp

Jsp,Servlet,文件上傳,文件下載
 

Jsp,Servlet,文件上傳,文件下載

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持VeVb武林網(wǎng)。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到JSP教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
我不卡伦不卡影院| 亚洲欧美另类人妖| 麻豆影视在线观看_| 2019日本中文字幕| 黄色在线观看网站| 能在线观看av网站| 久久久999免费视频| 欧美日韩在线精品成人综合网| 久久视频免费观看| 中文字幕一区日韩精品| 成人一级毛片| 亚洲第一精品夜夜躁人人爽| 中文字幕在线看人| 色综合一区二区日本韩国亚洲| 久久99久久99精品免视看婷婷| 中文字幕在线看视频国产欧美在线看完整| 欧美激情中文字幕一区二区| 日韩精品中午字幕| 欧美综合在线播放| 亚洲黄色一区二区| 日韩中文字幕无砖| 99在线观看视频网站| 亚洲男人天堂古典| 亚洲成av人片在线| 成人在线视频播放| 少妇真人直播免费视频| 国产免费av网站| 免费观看在线综合| 国产第一区电影| 国产在线观看成人| 可以看av的网址| 综合国产在线观看| 国产一区二区在线看| 久久夜色精品国产欧美乱极品| 亚洲欧美日韩国产成人精品影院| 91午夜视频在线观看| 国产剧情一区二区三区| 日韩欧美美女在线观看| 亚洲制服丝袜在线播放| 一本大道香蕉8中文在线视频| 91精品久久久久久综合乱菊| 亚洲精品一卡二卡三卡四卡| 五月婷婷六月综合| 亚洲av综合色区无码另类小说| 亚洲图片另类小说| 老牛影视免费一区二区| 国产精品白浆| 中文亚洲免费| 欧美特黄aaaaaa| 精品福利网址导航| 97秋霞电影网| 久久久久久久久免费看无码| www.爱爱.com| 国产风韵犹存在线视精品| 国产精品77777| 久久久久久免费视频| www.日本少妇| 99久久久久免费精品国产| 日本高清不卡在线| 最新亚洲视频| 91精品国产综合久久精品性色| 国产成人精品电影久久久| 亚洲精品一区二区三区婷婷月| 久久久夜色精品| 亚洲成人偷拍自拍| 亚洲在线天堂| 美女扒开尿口让男人操亚洲视频网站| 国产777精品精品热热热一区二区| 中文字幕1234区| 欧美日韩一二区| 国产精品香蕉国产| 亚洲444eee在线观看| 性欧美精品孕妇| 国产韩日精品| 91精品中文字幕一区二区三区| 欧美激情国内自拍| 日韩美女视频在线观看| 直接看的黄色网址| 欧美中文在线免费| www.久久成人| 亚洲视频在线观看日本a| 99久久99精品久久久久久| 成人a级免费视频| 欧美艾v福利视频在线观看| 国产美女在线观看一区| 精品视频全国免费看| 亚洲欧美国产日韩中文字幕| 国产伦精品一区二区三区高清版禁| 欧美亚洲另类视频| 亚洲一区二三| 国产一区二区三区在线观看视频| 欧美日韩亚洲国产另类| 欧美人牲a欧美精品| av中文天堂在线| 欧美乱大交xxxxx在线观看| 男人的天堂av网| 蜜桃精品一区二区| www.成人在线.com| av福利在线导航| 久久精品久久99精品久久| 亚洲免费电影一区| 天天免费综合色| 亚洲国产成人私人影院tom| 久久久天堂国产精品| 欧美性极品少妇精品网站| 亚洲成人日韩在线| 久久九九有精品国产23| 国产美女永久无遮挡| 日本免费一区二区三区视频观看| 日本中文字幕伦在线观看| 色偷偷综合网| 成人软件在线观看| 青青草手机在线| 欧美午夜久久久| 国产精品视频自在线| 国产模特av私拍大尺度| 九色精品免费永久在线| 亚洲精品成人久久电影| 日韩精品成人在线观看| 久久久久久久国产精品毛片| 欧美色老头old∨ideo| 青青操在线观看| 色婷婷狠狠综合| 7777kkk亚洲综合欧美网站| 夜久久久久久| 免费看毛片网站| 亚洲自拍偷拍网| 日韩在线三级| 免费在线你懂的| 亚洲乱码在线| 国产狂喷白浆在线观看视频| 女人被爽到呻吟gif动态图下载| 国产在线不卡av| 日韩乱码一区二区| www国产91| 韩国精品福利一区二区三区| 欧美在线性爱视频| 成人午夜视频福利| 男人日女人bb视频| 亚洲第一天堂在线观看| 久久久无码精品亚洲国产| 色av性av丰满av| 国产免费无码一区二区| 成人午夜福利一区二区| 91视频福利| 久草热视频在线观看| 色天使久久综合网天天| 国产又粗又黄又爽| 日韩在线观看www| 亚洲人成电影在线观看天堂色| 久久久国产精品网站| 国产伦精品一区二区三区视频我| 激情校园亚洲图片| 91精品国产色综合久久不卡蜜臀| 欧美精品一区二区三区免费| 日本特黄特色aaa大片免费| 成人激情五月天| 午夜精品剧场| 亚洲国产欧美日韩在线| 5858p先锋影音资源网| 亚洲av中文无码乱人伦在线视色| 天堂蜜桃一区二区三区| 雨宫琴音一区二区在线| 国产精品入口麻豆完整版| 国产熟妇一区二区三区四区| 国产探花视频在线| 国语自产精品视频在线看一大j8| 日本婷婷久久久久久久久一区二区| 激情五月色综合国产精品| 久久综合精品视频| 欧美bbbxxxxx| 91嫩草国产丨精品入口麻豆| 日韩电影大全网站| 国产男女猛烈无遮挡| 国产乱子伦一区二区三区国色天香| 亚洲国模精品一区| 农村妇女精品一二区| 中文字幕人妻熟女在线| 国产高中女学生第一次| 亚洲欧美国产日韩综合| 好紧好硬好湿我太爽了| 国产三级自拍视频| 国产精品视频内| 伦理一区二区三区| 亚洲天堂开心观看| 中文字幕线观看| 一本大道综合伊人精品热热| 国产精品手机视频| 第一视频专区在线| 国产精品扒开腿做爽爽| www.成人在线观看| 一区二区精品视频| 亚洲天堂网在线观看视频| 完全免费av在线播放| 欧美激情精品久久久久久黑人| 春意影院在线| 亚洲一区二区自偷自拍| 97看剧电视剧大全| 九色综合狠狠综合久久| 国产极品粉嫩福利姬萌白酱| 好爽好深好紧好大| 国产二区视频在线观看| 欧美日韩激情视频一区二区三区| 亚洲婷婷综合色高清在线| 中文字幕免费视频观看| 国产精品97| 国产精品一区三区在线观看| 亚洲熟妇无码一区二区三区| 久久综合九色综合网站| 中文字幕在线日亚洲9| 日韩欧美中文在线观看| 午夜精品在线视频一区| 日韩免费视频一区| 婷婷精品在线观看| 亚洲欧美日韩一区成人| 国产三级国产精品国产国在线观看| 久久视频在线观看中文字幕| 黄色一区二区在线观看| 精品在线一区| 免费精品视频一区二区三区| 四虎免费在线观看| 91麻豆精品国产91久久久资源速度| 国内精品区一区二区三| 91精品二区| 久久精品无码一区二区日韩av| 欧美交a欧美精品喷水| 香蕉自在线视频| 午夜羞羞小视频在线观看| 欧美久久久网站| 精品一区免费| 日本精品专区| 精品无码人妻一区二区三区品| 9色在线视频网站| 香蕉久久成人网| 操人视频在线播放| av网站中文字幕| 免费观看成人高潮| 日本乱码一区二区三区不卡| 国产馆手机在线观看| 粉嫩aⅴ一区二区三区四区五区| 国产精品亚洲一区二区在线观看| 夫妻免费无码v看片| 你懂的视频网站| 日韩三级小视频| 亚洲免费视频一区| 国产精品1区2区在线观看| 中文字幕在线日亚洲9| 先锋影音一区二区| 国产午夜电影| 亚洲一区二区三区乱码| 亚洲国产免费看| 精品无码国产污污污免费网站| 中文字幕欧美日韩一区| 天堂中文视频在线| 蜜臀精品一区二区三区在线观看| 国产在线精品一区二区中文| 新狼窝色av性久久久久久| 成人污视频在线观看| 欧美一区二区私人影院日本| 亚洲av无码国产精品麻豆天美| 男生操女生视频网站| 毛片aaaaaa| 国产亚洲精品熟女国产成人| www.色在线| 日韩视频永久免费| 神马久久久久久久久久久| 91成年人网站| 免费精品一区二区| 欧美性色综合网| 天堂中文字幕| 国产精品视频一区视频二区| 国产三级香港三韩国三级| 婷婷午夜社区一区| 国产精品伦一区二区三区视频| 亚洲激情电影在线| 五月激情婷婷在线| 国产a∨精品一区二区三区不卡| 外国成人毛片| 国产精品大片wwwwww| 久久gogo国模啪啪裸体| 黄色直播在线| 一区二区视频| 星空大象在线观看免费播放| 中文字幕乱码日本亚洲一区二区| 好看的视频你懂的| 91视频8mav| 黄色成人美女网站| 精品亚洲欧美一区| 久久av中文| 亚洲精品一区视频| 特黄视频在线观看| 无码少妇精品一区二区免费动态| 欧美一级色片| 天天色天天爱天天射综合| 国产精品大片免费观看| 亚洲v日韩v欧美v综合| 欧美精品综合| 欧美激情一区二区| 九九热在线视频观看| 8x拔播拔播x8国产精品| jizz大全欧美jizzcom| 高清不卡一区二区三区| 91国偷自产一区二区三区成为亚洲经典| 久久99热只有频精品91密拍| 日韩—二三区免费观看av| 嫩草一区二区三区| 亚洲欧洲无码一区二区三区| 欧美做受喷浆在线观看| 亚洲三级免费观看| 香港日本韩国三级| 亚洲成人7777| 经典三级在线| 欧美亚洲一级片| 国户精品久久久久久久久久久不卡| 美女精品一区最新中文字幕一区二区三区| 98精品国产自产在线观看| 国产亚洲欧美aaaa| 日韩理论片一区二区| 麻豆天美蜜桃91| 国产伦精品一区二区三区妓女下载| 国产精品久久国产精麻豆99网站| 免费久久网站| 亚洲国产综合在线观看| 日韩久久99| 国产精品直播网红| 日韩二区在线观看| 日韩午夜影院| 夜夜嗨av一区二区三区四区|