成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > Servlet實現文件上傳的三種方法總結

Servlet實現文件上傳的三種方法總結

熱門標簽:電銷機器人免培訓 海外圖書館地圖標注點 電話機器人需要使用網絡嗎 潤滑油銷售電銷機器人 外呼系統(tǒng)使用方法 自繪地圖標注數據 如何看懂地圖標注點 給地圖標注得傭金 南通通訊外呼系統(tǒng)產品介紹

Servlet實現文件上傳的三種方法總結

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"); 
    //讀取請求Body 
    byte[] body = readBody(request); 
    //取得所有Body內容的字符串表示 
    String textBody = new String(body, "ISO-8859-1"); 
    //取得上傳的文件名稱 
    String fileName = getFileName(textBody); 
    //取得文件開始與結束位置 
    Position p = getFilePosition(request, textBody); 
    //輸出至文件 
    writeTo(fileName, body, p); 
  } 
 
  //構造類 
  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 { 
    //獲取請求文本字節(jié)長度 
    int formDataLength = request.getContentLength(); 
    //取得ServletInputStream輸入流對象 
    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()); 
    //取得實際上傳文件的氣勢與結束位置 
    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; 
  } 
 
  //存儲文件 
  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)上傳,瀏覽器將產生臨時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)上傳,瀏覽器將產生臨時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實現文件上傳的實例,如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

您可能感興趣的文章:
  • Java Servlet簡單實例分享(文件上傳下載demo)
  • SpringMVC + servlet3.0 文件上傳的配置和實現代碼
  • Servlet實現多文件上傳功能
  • Servlet3.0實現文件上傳的方法
  • servlet+jquery實現文件上傳進度條示例代碼
  • Servlet實現文件上傳,可多文件上傳示例
  • java基于servlet使用組件smartUpload實現文件上傳
  • java基于servlet實現文件上傳功能解析
  • servlet+JSP+mysql實現文件上傳的方法
  • Android中發(fā)送Http請求(包括文件上傳、servlet接收)的實例代碼

標簽:內江 黃石 銅川 廣州 貸款邀約 大連 南京 樂山

巨人網絡通訊聲明:本文標題《Servlet實現文件上傳的三種方法總結》,本文關鍵詞  Servlet,實現,文件,上傳,的,;如發(fā)現本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Servlet實現文件上傳的三種方法總結》相關的同類信息!
  • 本頁收集關于Servlet實現文件上傳的三種方法總結的相關信息資訊供網民參考!
  • 推薦文章
    欧美韩国日本一区| 中文字幕亚洲日本岛国片| 玖玖爱免费视频| 欧美视频专区一二在线观看| 欧美成a人片免费观看久久五月天| 四虎影视国产精品| 欧美极品另类videosde| 卡通欧美亚洲| 国产精品一区在线看| 精品国产乱码久久久久久果冻传媒| 国产精品久久精品牛牛影视| 一区二区三区四区五区在线| 欧美中文字幕一区二区| 久久这里只有精品视频首页| 国产一区二区三区四区在线观看| 精品乱子伦一区二区三区| 国产精品天天操| 成人亚洲国产| 99久久婷婷国产综合| 粉嫩av一区二区三区免费野| 精品一区二区三区在线观看l| 麻豆久久久久久久| 最新在线黄色网址| 久久久久久亚洲av无码专区| 在线国产视频一区| 欧美日本视频在线| 一本色道久久综合无码人妻| 国产一区二区三区高清| 色婷婷激情视频| 日本福利一区二区三区| 97香蕉久久超级碰碰高清版| 欧美大胆在线视频| 亚洲一级Av无码毛片久久精品| 精品成人av一区| 成人免费视频一区| 久久精品视频日本| 欧美日韩高清不卡| 欧美人妖巨大在线| 林心如三级全黄裸体| 日本久久一区二区三区| 色狠狠色狠狠综合| 日韩久久精品一区| 欧美精品激情在线| 色婷婷av一区二区三| 久久影视中文粉嫩av| 日韩在线观看免费av| 136福利视频导航| 国产尤物在线观看| 成人免费网视频| 怡红院av亚洲一区二区三区h| 欧美在线一级va免费观看| 亚洲欧美日韩国产精品| 亚洲人成伊人成综合网小说| 成人黄色在线免费观看| 天堂蜜桃一区二区三区| 日韩av成人网| av噜噜色噜噜久久| 日韩精品中文字幕有码专区| 国产性做久久久久久| 欧美在线观看不卡| 性色av蜜臀av| 99成人在线观看| 午夜一区二区三区四区| 国产精品999| 国产一区欧美一区| 视频一区二区三区国产| 亚洲精品动漫| 日本黄色免费在线| 日本伦理一区二区三区| 久久精品色播| 国产精品69久久| 亚洲永久在线观看| 国产成人av一区| 久久精品国产99久久99久久久| 色综合 综合色| 欧美日本国产视频| 欧美成人自拍视频| 亚洲а∨天堂久久精品9966| 亚洲欧美在线免费观看| 亚洲www啪成人一区二区麻豆| 看高清中日韩色视频| 色吊丝在线永久观看最新版本| 国产精品伦理一区二区| 国产高清精品在线| 在线一区av| 国产精品影音先锋| 调教视频在线观看| 国产精品久久久久高潮| 樱花草www在线| 中文字幕av导航| 欧美亚州在线观看| 69视频在线免费观看| 黄网免费入口| 久热中文字幕在线精品免费| 亚洲国产999| 91视视频在线观看入口直接观看www| 激情综合网av| 成人激情动漫在线观看| 在线免费av片| 国产精品视频永久免费播放| 中文字幕精品在线视频| 国产不卡123| 国产第100页| 中文字幕一区二区三区免费看| 潘金莲一级淫片aaaaaa播放| 久久精品aaaaaa毛片| 污网站视频在线观看| 制服诱惑一区二区| 久久99久久99精品中文字幕| 天堂一区二区在线| 精品亚洲国内自在自线福利| 捆绑紧缚一区二区三区在线观看| 色狠狠久久av五月综合|| 菠萝蜜网站在线观看| 91国内免费在线视频| 中国一级片在线观看| 国内成人在线| 欧美xingq一区二区| 中文精品电影| 欧美激情视频在线免费观看 欧美视频免费一| 国内精品女同女同一区二区三区| 在线观看视频99| 91嫩草国产在线观看| 欧美aaaaaa午夜精品| 中国女人内谢69xxx视频| 91精品国产高清久久久久久91| www.成人在线| 国产wwwxxx| 91xxxxx| 国内自拍欧美激情| 国产99久久久久久免费看农村| av女在线播放| 日韩av电影免费在线观看| 亚洲最大成人| 中文天堂最新版本在线观看| 久久久噜噜噜久噜久久| 国产一区二区三区香蕉| 蜜桃特黄a∨片免费观看| 国产成人香蕉在线视频fuz| 无码人妻精品一区二区| 91精品国产综合久久久久久久久| 午夜视黄欧洲亚洲| 欧美又黄又嫩大片a级| 欧美性黄网官网| 色哟哟精品观看| 亚洲区第一页| a级毛片免费高清视频| 国产精品伦一区二区三区| 欧美高清视频一区二区| 1区不卡电影| 三上悠亚作品在线观看| 五月婷婷激情网| 亚洲综合精品一区二区| 免费在线观看黄视频| fpee性欧美| 顶级网黄在线播放| 久久精品国产久精国产一老狼| 日韩三级免费| 欧美综合一区二区| 欧美 国产 小说 另类| 中文字幕av一区二区三区人妻少妇| 91精品一区二区三区综合在线爱| 日韩五码电影| 成人午夜视频免费观看| 久久在线视频精品| wwwxx免费| 久久噜噜色综合一区二区| 国产精品嫩草99av在线| 91色琪琪电影亚洲精品久久| 欧美美女一区| 五月天亚洲婷婷| 激情四射综合网| 鲁鲁狠狠狠7777一区二区| 2019年中文字幕| caoliu在线| 午夜影视一区二区三区| 人妻av一区二区三区| 亚洲国产精品久久久久秋霞影院| 久久久国产一区二区| 国产精品对白刺激久久久| 4k岛国日韩精品**专区| 亚洲男男av| 欧美日本一区二区三区| 成人在线免费看黄| 久久久久久少妇| 星空影院最新电视剧免费观看| 污视频在线免费观看| 国产亚洲成av人片在线观看桃| 国产精品亚洲自拍| www.撸撸| 国产高清一区视频| 18精品爽视频在线观看| 欧美国产视频在线观看| 色戒汤唯在线| 99热在线观看免费| 一区二区三区 在线观看视| 午夜视频免费在线| 糖心vlog精品一区二区| 久久视频在线免费观看| 日韩欧美三级| 波多野结衣亚洲一二三| 美女撒尿一区二区三区| 精品视频在线一区二区| 日日骚.com| 337p亚洲精品色噜噜| av 日韩 人妻 黑人 综合 无码| 日本性爱视频在线观看| 亚洲综合在线做性| 国产精品99| 三上悠亚 电影| 天天摸天天操天天爽| 精品日本一区二区三区| 欧美亚洲另类视频| 成人黄色片在线观看| 日韩禁在线播放| 亚洲成人av一区二区| 久久欧美中文字幕| 在线观看国产福利| 国产欧美久久一区二区三区| 久久99精品久久久久久秒播放器| 日韩三级视频在线| 欧美二区视频| 顶级欧美妇高清xxxxx| 久久无码高潮喷水| av中文在线资源库| 亚洲中文字幕无码一区| 美女爆乳18禁www久久久久久| 在线一区二区视频| 亚洲精品午夜| 日韩av手机在线免费观看| 国产一区二区三区18| 欧美 激情 在线| 老太脱裤让老头玩ⅹxxxx| 精品一区二三区| 欧美美最猛性xxxxxx| 成人午夜视频在线观看免费| 茄子视频成人在线观看| 久久久精品国产亚洲| 在线免费a视频| 俄罗斯精品一区二区三区| 亚洲欧美国产另类首页| 国内精品久久久久久久影视麻豆| 国产女同无遮挡互慰高潮91| 在线激情影院一区| 日韩一区二区三区电影在线观看| 一区2区3区在线看| 成年网在线观看免费观看网址| 久久精品99久久久久久久久| 免费观影入口看日本视频| 亚洲精品美女| 欧美调教femdomvk| 99精品在免费线偷拍| 波多野结衣国产精品| 成人国产精品一级毛片视频| 国产精品美女久久福利网站| caoporen国产精品| 成人黄色午夜影院| 欧美第一页在线| 女教师淫辱の教室蜜臀av软件| 国产日韩专区在线| 国产精品剧情一区二区在线观看| 99精品久久久久久中文字幕| 97色在线观看| 久色乳综合思思在线视频| 91精品国产66| 国产a精品视频| 伊人春色在线观看| 中文字幕在线视频第一页| 国产精品欧美一区二区三区| 国产在线视频网站| 一级片视频免费看| 日本精品久久久久| 欧美亚洲图片小说| 最近中文字幕在线mv视频在线| 中文在线最新版天堂8| 日韩欧美中文| 精品国产欧美| 国产精品四虎| 亚洲欧美国产一区二区三区| www.夜夜爽| 天天碰日日操| 日本成人三级| www欧美日韩| 三年片观看免费观看大全视频下载| 国产黄在线免费观看| 国产精品青青草| 亚洲精品在线看| 未满十八勿进黄网站一区不卡| 电影av一区| 少妇一级淫免费观看| av网站一区| 专区另类欧美日韩| 国产日韩换脸av一区在线观看| 五月婷婷综合久久| 精品一区二区男人吃奶| 国产18无套直看片| 久久中文精品| 欧美性受xxxx免费视频| 精品日韩中文字幕| 91tv亚洲精品香蕉国产一区7ujn| 中国女人内谢25xxxxx| 欧美aaa一级片| 亚洲欧美日韩国产综合在线| 最全影音av资源中文字幕在线| 日本一道高清亚洲日美韩| 免费看污视频的网站| 6699久久国产精品免费| 密臀av一区二区三区| 久久成人精品无人区| 国产美女玉足交| 中文字幕999| 中文字幕在线中文| 亚洲欧美日韩综合| 男女猛烈激情xx00免费视频| 污污视频网站免费观看| 成人福利电影| 亚洲在线一区二区三区| 91精品国产综合久久精品| 日本黄色小网站| 888奇米影视| 黄a在线观看| 99热这里只有精品在线观看| 欧美精品videos| 91成人性视频| 久久91导航| 在线观看国产免费视频| 久久久久久亚洲精品不卡| 美女一区二区视频|