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

首頁 > 編程 > JSP > 正文

Servlet實(shí)現(xiàn)文件上傳的三種方法總結(jié)

2024-09-05 00:23:15
字體:
供稿:網(wǎng)友

Servlet實(shí)現(xiàn)文件上傳的三種方法總結(jié)

1. 通過getInputStream()取得上傳文件。

/**  * To change this template, choose Tools | Templates  * and open the template in the editor.  */ package net.individuals.web.servlet;  import java.io.DataInputStream; import java.io.FileOutputStream; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;  /**  *  * @author Barudisshu  */ @WebServlet(name = "UploadServlet", urlPatterns = {"/UploadServlet"}) public class UploadServlet extends HttpServlet {    /**    * Processes requests for both HTTP    * <code>GET</code> and    * <code>POST</code> methods.    *    * @param request servlet request    * @param response servlet response    * @throws ServletException if a servlet-specific error occurs    * @throws IOException if an I/O error occurs    */   protected void processRequest(HttpServletRequest request, HttpServletResponse response)       throws ServletException, IOException {     response.setContentType("text/html;charset=UTF-8");     //讀取請(qǐng)求Body     byte[] body = readBody(request);     //取得所有Body內(nèi)容的字符串表示     String textBody = new String(body, "ISO-8859-1");     //取得上傳的文件名稱     String fileName = getFileName(textBody);     //取得文件開始與結(jié)束位置     Position p = getFilePosition(request, textBody);     //輸出至文件     writeTo(fileName, body, p);   }    //構(gòu)造類   class Position {      int begin;     int end;      public Position(int begin, int end) {       this.begin = begin;       this.end = end;     }   }    private byte[] readBody(HttpServletRequest request) throws IOException {     //獲取請(qǐng)求文本字節(jié)長度     int formDataLength = request.getContentLength();     //取得ServletInputStream輸入流對(duì)象     DataInputStream dataStream = new DataInputStream(request.getInputStream());     byte body[] = new byte[formDataLength];     int totalBytes = 0;     while (totalBytes < formDataLength) {       int bytes = dataStream.read(body, totalBytes, formDataLength);       totalBytes += bytes;     }     return body;   }    private Position getFilePosition(HttpServletRequest request, String textBody) throws IOException {     //取得文件區(qū)段邊界信息     String contentType = request.getContentType();     String boundaryText = contentType.substring(contentType.lastIndexOf("=") + 1, contentType.length());     //取得實(shí)際上傳文件的氣勢與結(jié)束位置     int pos = textBody.indexOf("filename=/"");     pos = textBody.indexOf("/n", pos) + 1;     pos = textBody.indexOf("/n", pos) + 1;     pos = textBody.indexOf("/n", pos) + 1;     int boundaryLoc = textBody.indexOf(boundaryText, pos) - 4;     int begin = ((textBody.substring(0, pos)).getBytes("ISO-8859-1")).length;     int end = ((textBody.substring(0, boundaryLoc)).getBytes("ISO-8859-1")).length;      return new Position(begin, end);   }    private String getFileName(String requestBody) {     String fileName = requestBody.substring(requestBody.indexOf("filename=/"") + 10);     fileName = fileName.substring(0, fileName.indexOf("/n"));     fileName = fileName.substring(fileName.indexOf("/n") + 1, fileName.indexOf("/""));      return fileName;   }    private void writeTo(String fileName, byte[] body, Position p) throws IOException {     FileOutputStream fileOutputStream = new FileOutputStream("e:/workspace/" + fileName);     fileOutputStream.write(body, p.begin, (p.end - p.begin));     fileOutputStream.flush();     fileOutputStream.close();   }    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">   /**    * Handles the HTTP    * <code>GET</code> method.    *    * @param request servlet request    * @param response servlet response    * @throws ServletException if a servlet-specific error occurs    * @throws IOException if an I/O error occurs    */   @Override   protected void doGet(HttpServletRequest request, HttpServletResponse response)       throws ServletException, IOException {     processRequest(request, response);   }    /**    * Handles the HTTP    * <code>POST</code> method.    *    * @param request servlet request    * @param response servlet response    * @throws ServletException if a servlet-specific error occurs    * @throws IOException if an I/O error occurs    */   @Override   protected void doPost(HttpServletRequest request, HttpServletResponse response)       throws ServletException, IOException {     processRequest(request, response);   }    /**    * Returns a short description of the servlet.    *    * @return a String containing servlet description    */   @Override   public String getServletInfo() {     return "Short description";   }// </editor-fold> } 

 2. 通過getPart()、getParts()取得上傳文件。

    body格式:

POST http://www.example.com HTTP/1.1  Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryrGKCBY7qhFd3TrwA   ------WebKitFormBoundaryrGKCBY7qhFd3TrwA  Content-Disposition: form-data; name="text"   title  ------WebKitFormBoundaryrGKCBY7qhFd3TrwA  Content-Disposition: form-data; name="file"; filename="chrome.png"  Content-Type: image/png   PNG ... content of chrome.png ...  ------WebKitFormBoundaryrGKCBY7qhFd3TrwA--   [html] view plain copy/**  * To change this template, choose Tools | Templates  * and open the template in the editor.  */ package net.individuals.web.servlet;  import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import javax.servlet.ServletException; import javax.servlet.annotation.MultipartConfig; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.Part;  /**  *  * @author Barudisshu  */ @MultipartConfig @WebServlet(name = "UploadServlet", urlPatterns = {"/UploadServlet"}) public class UploadServlet extends HttpServlet {    /**    * Processes requests for both HTTP    * <code>GET</code> and    * <code>POST</code> methods.    *    * @param request servlet request    * @param response servlet response    * @throws ServletException if a servlet-specific error occurs    * @throws IOException if an I/O error occurs    */   protected void processRequest(HttpServletRequest request, HttpServletResponse response)       throws ServletException, IOException {     Part part = request.getPart("photo");     String fileName = getFileName(part);     writeTo(fileName, part);   }    //取得上傳文件名   private String getFileName(Part part) {     String header = part.getHeader("Content-Disposition");     String fileName = header.substring(header.indexOf("filename=/"") + 10, header.lastIndexOf("/""));      return fileName;   }    //存儲(chǔ)文件   private void writeTo(String fileName, Part part) throws IOException, FileNotFoundException {     InputStream in = part.getInputStream();     OutputStream out = new FileOutputStream("e:/workspace/" + fileName);     byte[] buffer = new byte[1024];     int length = -1;     while ((length = in.read(buffer)) != -1) {       out.write(buffer, 0, length);     }      in.close();     out.close();   }    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">   /**    * Handles the HTTP    * <code>GET</code> method.    *    * @param request servlet request    * @param response servlet response    * @throws ServletException if a servlet-specific error occurs    * @throws IOException if an I/O error occurs    */   @Override   protected void doGet(HttpServletRequest request, HttpServletResponse response)       throws ServletException, IOException {     processRequest(request, response);   }    /**    * Handles the HTTP    * <code>POST</code> method.    *    * @param request servlet request    * @param response servlet response    * @throws ServletException if a servlet-specific error occurs    * @throws IOException if an I/O error occurs    */   @Override   protected void doPost(HttpServletRequest request, HttpServletResponse response)       throws ServletException, IOException {     processRequest(request, response);   }    /**    * Returns a short description of the servlet.    *    * @return a String containing servlet description    */   @Override   public String getServletInfo() {     return "Short description";   } } 

3、另一種較為簡單的方法:采用part的wirte(String fileName)上傳,瀏覽器將產(chǎn)生臨時(shí)TMP文件

/**  * To change this template, choose Tools | Templates  * and open the template in the editor.  */ package net.individuals.web.servlet;  import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.MultipartConfig; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.Part;  /**  *采用part的wirte(String fileName)上傳,瀏覽器將產(chǎn)生臨時(shí)TMP文件。  * @author Barudisshu  */ @MultipartConfig(location = "e:/workspace") @WebServlet(name = "UploadServlet", urlPatterns = {"/UploadServlet"}) public class UploadServlet extends HttpServlet {    /**    * Processes requests for both HTTP    * <code>GET</code> and    * <code>POST</code> methods.    *    * @param request servlet request    * @param response servlet response    * @throws ServletException if a servlet-specific error occurs    * @throws IOException if an I/O error occurs    */   protected void processRequest(HttpServletRequest request, HttpServletResponse response)       throws ServletException, IOException {     //處理中文文件名     request.setCharacterEncoding("UTF-8");     Part part = request.getPart("photo");     String fileName = getFileName(part);     //將文件寫入location指定的目錄     part.write(fileName);   }    private String getFileName(Part part) {     String header = part.getHeader("Content-Disposition");     String fileName = header.substring(header.indexOf("filename=/"") + 10, header.lastIndexOf("/""));     return fileName;   }    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">   /**    * Handles the HTTP    * <code>GET</code> method.    *    * @param request servlet request    * @param response servlet response    * @throws ServletException if a servlet-specific error occurs    * @throws IOException if an I/O error occurs    */   @Override   protected void doGet(HttpServletRequest request, HttpServletResponse response)       throws ServletException, IOException {     processRequest(request, response);   }    /**    * Handles the HTTP    * <code>POST</code> method.    *    * @param request servlet request    * @param response servlet response    * @throws ServletException if a servlet-specific error occurs    * @throws IOException if an I/O error occurs    */   @Override   protected void doPost(HttpServletRequest request, HttpServletResponse response)       throws ServletException, IOException {     processRequest(request, response);   }    /**    * Returns a short description of the servlet.    *    * @return a String containing servlet description    */   @Override   public String getServletInfo() {     return "Short description";   }// </editor-fold> } 

以上就是Servlet實(shí)現(xiàn)文件上傳的實(shí)例,如有疑問請(qǐng)留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到JSP教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
国产精品一区二区三区免费观看| 久草视频福利在线| 久久免费看少妇高潮| 成人三级高清视频在线看| 夜夜爽99久久国产综合精品女不卡| av在线免费播放| 91精品久久久久久久蜜月| 欧美激情综合色综合啪啪| 福利视频在线播放| 国产乱淫av一区二区三区| 欧美一区二区啪啪| 亚洲精品国产精品国产| 草视频在线观看| 国产黄色高清在线| 欧美高清你懂的| 蜜桃网站在线观看| 亚洲图色一区二区三区| 欧美bbbbbbbbbbbb精品| 精品一区二区三区电影| 午夜一区二区三区免费| 国产美女视频91| 亚洲精品一区二区18漫画| 欧美日本国产| 国产乡下妇女做爰毛片| 极品久久久久久久| 亚洲一二三av| 这里只有精品在线观看| av高清在线免费观看| 老熟妇仑乱视频一区二区| 亚洲图片欧美色图| 免费91麻豆精品国产自产在线观看| 白白色 亚洲乱淫| 97超碰在线免费观看| 牛牛在线精品视频| 免费吸乳羞羞网站视频| 亚洲精品欧美二区三区中文字幕| 久久久亚洲国产美女国产盗摄| 日韩欧美在线视频一区二区| 欧美日韩四区| 午夜精品久久一牛影视| 成人在线中文字幕| 成年人视频在线免费看| 欧美中日韩一区二区三区| 久久精品动漫| 欧美日韩第一视频| 国产精品成人3p一区二区三区| 午夜精品在线视频一区| 5月婷婷6月丁香| 欧美视频一区二区三区| 强开小嫩苞一区二区三区视频| 污污网站在线看| 亚洲女同一区| 久久好看免费视频| 天天影视欧美综合在线观看| 国语对白中文字幕| 牛人盗摄一区二区三区视频| 中文视频在线观看| 奇米综合一区二区三区精品视频| 国产视频久久久| 亚洲精品成a人在线观看| 超碰在线观看免费| 日韩在线观看免费av| 在线视频网站| 97成人在线视频| 欧美黄色性视频| av手机在线播放| 国产一区二区成人久久免费影院| 欧洲永久精品大片ww免费漫画| 久久久久久av无码免费网站| 在线日本制服中文欧美| 国内精品在线播放| 成视人a免费观看视频| 国产又爽又黄网站亚洲视频123| 九九在线观看视频| 一区二区在线高清视频| 亚洲视频国产视频| 国产三级伦理片| 国产一线在线观看| 91精品久久久久久久| 久久精品国产电影| 欧美在线视频一二三| www.国产自拍| 亚洲国产精品va在线观看黑人| 久久精品国产亚洲a| 免费一级特黄录像| 久久久男人天堂| 在线视频你懂得一区二区三区| 亚洲三区视频| 在线播放国产一区中文字幕剧情欧美| 成人勉费视频| 精品中文字幕一区二区| 在线观看日韩高清av| 国产综合内射日韩久| 伊人伊人av电影| 香港经典三级在线| 二区三区中文字幕| 亚洲精品视频免费在线观看| 欧美一区二区三区不卡视频| 国产成人av一区二区三区在线观看| 黄色一级大片免费| 毛片免费在线观看| julia中文字幕久久亚洲蜜臀| 91网站免费视频| 99热这里只有精品在线观看| 亚洲欧洲另类| 中文字幕视频一区| 91极品美女在线| 欧美一级成年大片在线观看| 激情 小说 亚洲 图片: 伦| 精品国精品国产自在久国产应用| 亚洲精品日韩久久| 91精品国产色综合久久不卡电影| 女同互忝互慰dv毛片观看| 国产一区二区三区亚洲综合| 国产精品亚洲一区二区在线观看| 日本五十肥熟交尾| 久久精品一区二区三区不卡牛牛| 婷婷激情在线| 国内揄拍国内精品久久| 国产精品精品国产一区二区| 极品粉嫩小仙女高潮喷水久久| 日韩电视剧免费观看网站| 亚洲视频视频在线| fc2ppv在线观看| 国产成人鲁鲁免费视频a| 亚洲欧美自拍视频| 免费一级suv好看的国产网站| 亚洲日本免费| 色999日韩欧美国产| 国产剧情av在线| 欧美日韩国产免费观看| 女~淫辱の触手3d动漫| 午夜欧美2019年伦理| 国产三级三级三级看三级| 亚洲乱码精品一二三四区日韩在线| 翡翠波斯猫1977年美国| 自由日本语亚洲人高潮| 1区2区3区国产精品| 精品91福利视频| 1769国产精品| 久久精品最新地址| 91网在线免费观看| 手机在线一区二区三区| 国产午夜精品理论片a级探花| 三级黄在线播放| 亚洲一级av毛片| 自拍偷拍欧美亚洲| 日韩高清国产精品| 一级片免费网址| 日韩精品视频免费在线观看| 欧美电影在线观看一区| 中文字幕在线不卡一区| 99视频都是精品热在线播放| 日本一二区视频| 小泽玛利亚一区二区三区视频| 久久久久久久久久影院| 日韩在线综合网| 亚洲天堂美女视频| 日韩电影免费观看在线观看| 欧美日韩中文字幕在线视频| 亚洲精品午夜国产va久久成人| 91福利精品视频| 国产乱码精品一区二三赶尸艳谈| 伊人手机在线视频| 久草视频手机在线| 四虎成人精品在永久在线观看| 极品粉嫩国产18尤物| 欧美日韩大片在线观看| 91精品视频专区| 99精品一区二区三区的区别| 欧美肥老妇视频| 久久久亚洲av波多野结衣| 欧美日韩另类综合| 欧美一区二区三区成人精品| 亚洲成人免费在线| 黄色网址在线免费| 国产日韩在线一区二区三区| 超碰地址久久| 日韩a在线播放| 69欧美性猛交| 亚洲高清资源综合久久精品| 黄色av网站免费观看| 日韩av123| 亚洲欧美久久久久一区二区三区| 国产成人a视频高清在线观看| av手机免费观看| 欧美亚州一区二区三区| 国产成人av一区二区三区在线| 7777精品| 99视频精品全部免费看| 国产精品日韩精品在线播放| 欧美巨猛xxxx猛交黑人97人| 国产叼嘿视频在线观看| 黄色大片中文字幕| 一级毛片免费播放| 日本黄色不卡视频| 成人黄色片在线观看| 日本高清在线观看| 老子影院午夜伦不卡大全| 婷婷视频一区二区三区| 裸体在线国模精品偷拍| 国产精品一区二区av白丝下载| 欧美一区二区视频17c| 欧美日韩一区三区| 国产农村一级特黄α**毛片| 亚洲成人av影片| 亚洲精品在线视频免费| 日韩成人在线一区| av日韩精品| 一区二区三区视频免费观看| 日韩一区自拍| 午夜精品久久久久久久星辰影院| 三级精品视频| 特级全黄一级毛片| 亚洲高清三级视频| 中文字幕亚洲一区二区va在线| 久久久99久久精品女同性| 国内精品视频一区二区三区| 久久99精品国产麻豆婷婷| 少妇视频一区二区| 国产69精品久久久久按摩| 国产成人a视频高清在线观看| 日韩在线观看视频网站| 久久综合久久网| 日韩脚交footjobhd| 一区二区三区视频免费在线观看| 围产精品久久久久久久| 欧美日韩 一区二区三区| 精品人妻二区中文字幕| 中文精品一区二区| 国内在线高清免费视频| 久久久久久12| 久久噜噜噜精品国产亚洲综合| 三级影片在线观看欧美日韩一区二区| 亚洲欧美第一页| 国产+高潮+白浆+无码| 色哟哟一区二区三区| 91九色国产ts另类人妖| 亚洲精品国产setv| a级在线免费观看| 91在线视频在线| 美女被黑人40厘米进入| 日本大片在线播放| 精品国产免费久久| 男人日女人的bb| www.日本不卡| 日韩欧美一区二区三区在线| 91国产精品成人| yellow视频在线观看一区二区| 亚洲女人天堂| gogogo高清在线观看一区二区| 国产一区二区在线看| 浮力影院欧美三级日本三级| 国产黄色大片免费看| 狠狠躁夜夜躁人人爽视频| 久久午夜电影| 九九九九九伊人| 欧美日韩一级片在线观看| 国产一区二区三区成人欧美日韩在线观看| 国产精品精品久久久| 韩国三级电影在线观看婷婷| 午夜精品视频在线观看一区二区| 人妻丰满熟妇av无码区| 羞羞小视频在线观看| 蜜桃在线一区二区| 快射视频在线观看| 亚洲精品91美女久久久久久久| 同性恋视频网站资源| 先锋影音av资源站| 亚洲成人激情小说| 亚洲中文字幕在线观看| 黄色国产一级视频| 在线观看视频一区二区三区| 成人免费在线视频播放| 中文字幕一区二区三区色视频| 可以免费观看av的网站| 国产精品久久777777| 成人xxxx视频| 五月婷婷另类国产| www.亚洲人| 国产精品99久久久久久董美香| 久久精彩免费视频| 一本大道av一区二区在线播放| 校园春色影音先锋| a免费在线观看| 狠狠躁日日躁夜夜躁av| 日日骚av一区二区| 91精品国产91久久综合| 一区二区三区四区在线不卡高清| 久久av免费| 国内毛片毛片毛片毛片毛片| 亚洲一区二区影院| 软萌小仙自慰喷白浆| 国产污污视频在线观看| 最美情侣韩剧在线播放| 日韩国产美国| 国产美女一区视频| 一级免费a一片| 国产精品视频大全| 日本大胆人体视频| 国内精品伊人久久久久av一坑| 91精品国产综合久久小美女| 欧美一级大胆视频| 91av在线免费视频| 国产成人一区二区三区别| 中国特级黄色片| 午夜精品视频网站| 亚洲一区综合| free性欧洲69| 久久久久亚洲av无码麻豆| 亚洲天堂免费| 中文字幕被公侵犯的漂亮人妻| 亚洲人的天堂男人爽爽爽| 欧美激情福利视频在线观看免费| 亚洲欧美日韩中文在线制服| 欧美精品一线| 人妻精品久久久久中文| 午夜不卡av免费| 日韩欧美国产二区| 欧美xxxxxbbbbb| 亚洲成年人网站在线观看| 色哦色哦哦色天天综合| 超碰人人cao| 蜜乳av另类精品一区二区| 国产黄页在线观看| 成人国产精品久久久网站| www.色香蕉| 欧美精品免费播放|