104_JavaWeb_文件上傳_ServletFileUpload_下載

      網(wǎng)友投稿 949 2022-05-29

      文件上傳,HTTP 協(xié)議的說(shuō)明

      commons-fileupload.jar 常用 API 介紹說(shuō)明

      1 導(dǎo)包 commons-fileupload.jar 依賴(lài) commons-io.jar

      2 常用類(lèi)

      ServletFileUpload 類(lèi),用于解析上傳的數(shù)據(jù)

      FileItem 類(lèi),表示每一個(gè)表單項(xiàng)

      boolean ServletFileUpload.isMultipartContent(HttpServletRequest request);

      判斷當(dāng)前上傳的數(shù)據(jù)格式是否是多段的格式

      public List parseRequest(HttpServletRequest request) 解析上傳的數(shù)據(jù)

      boolean FileItem.isFormField() 判斷當(dāng)前這個(gè)表單項(xiàng),是否是普通的表單項(xiàng)。還是上傳的文件類(lèi)型。

      true 表示普通類(lèi)型的表單項(xiàng)

      false 表示上傳的文件類(lèi)型

      String FileItem.getFieldName() 獲取表單項(xiàng)的 name 屬性值

      String FileItem.getString() 獲取當(dāng)前表單項(xiàng)的值。

      104_JavaWeb_文件上傳_ServletFileUpload_下載

      String FileItem.getName(); 獲取上傳的文件名

      void FileItem.write( file ); 將上傳的文件寫(xiě)到 參數(shù) file 所指向抽硬盤(pán)位置

      <%@ page contentType="text/html;charset=UTF-8" language="java" %> upload

      用戶(hù)名:
      頭像:

      public class uploadServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); // 解決亂碼問(wèn)題 //1 先判斷上傳的數(shù)據(jù)是否多段數(shù)據(jù)(只有是多段的數(shù)據(jù),才是文件上傳的) if (ServletFileUpload.isMultipartContent(request)){ //創(chuàng)建FileItemFactory工廠實(shí)現(xiàn)類(lèi) FileItemFactory fileitemfactory = new DiskFileItemFactory(); // 創(chuàng)建用于解析上傳數(shù)據(jù)的工具類(lèi)ServletFileUpload類(lèi) ServletFileUpload servletFileUpload = new ServletFileUpload(fileitemfactory); try { // 解析上傳的數(shù)據(jù),得到每一個(gè)表單項(xiàng)FileItem List list = servletFileUpload.parseRequest(request); for (FileItem fileItem : list) { if (fileItem.isFormField()){ System.out.println( "表單項(xiàng)的name屬性值 "+ fileItem.getFieldName() ); System.out.println( "表單項(xiàng)的value屬性值 "+ fileItem.getString("UTF-8") ); }else { System.out.println("表單項(xiàng)的name屬性值: " + fileItem.getFieldName()); System.out.println("上傳的文件名:" + fileItem.getName()); fileItem.write(new File("d:\\" + fileItem.getName())); } } } catch (Exception e) { e.printStackTrace(); } } } }

      文件下載

      下載的常用 API:

      response.getOutputStream();

      servletContext.getResourceAsStream();

      servletContext.getMimeType();

      response.setContentType();

      Download com.alex.Download Download /download

      public class Download extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 1、獲取要下載的文件名 String downloadFileName = "2.png"; // 2、讀取要下載的文件內(nèi)容 (通過(guò)ServletContext對(duì)象可以讀取) ServletContext servletContext = getServletContext(); //獲取要下載的文件類(lèi)型 String type = servletContext.getMimeType("/file/" + downloadFileName); // 4、在回傳前,通過(guò)響應(yīng)頭告訴客戶(hù)端返回的數(shù)據(jù)類(lèi)型 response.setContentType(type); // 5、還要告訴客戶(hù)端收到的數(shù)據(jù)是用于下載使用(還是使用響應(yīng)頭) // Content-Disposition響應(yīng)頭,表示收到的數(shù)據(jù)怎么處理 // attachment表示附件,表示下載使用 // filename= 表示指定下載的文件名 // url編碼是把漢字轉(zhuǎn)換成為%xx%xx的格式 // 如果是火狐瀏覽器使用Base64編碼 if (request.getHeader("User-agent").contains("Firefox")){ response.setHeader("Content-Disposition", "attachment; filename==?UTF-8?B?" + new BASE64Encoder().encode("中國(guó).jpg".getBytes("UTF-8")) + "?="); } else { // 如果不是火狐,是IE或谷歌,使用URL編碼操作 response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode("打卡.jpg", "UTF-8")); } /** * /斜杠被服務(wù)器解析表示地址為http://ip:prot/工程名/ 映射 到代碼的Web目錄 */ InputStream resourceAsStream = servletContext.getResourceAsStream("/files/" + downloadFileName); // 獲取響應(yīng)的輸出流 OutputStream outputStream = response.getOutputStream(); //3、把下載的文件內(nèi)容回傳給客戶(hù)端 // 讀取輸入流中全部的數(shù)據(jù),復(fù)制給輸出流,輸出給客戶(hù)端 IOUtils.copy(resourceAsStream, outputStream); } }

      Java Servlet web前端

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶(hù)投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:HDFS讀寫(xiě)原理和代碼簡(jiǎn)單實(shí)現(xiàn)
      下一篇:AOS編排語(yǔ)言系列教程(七):創(chuàng)建負(fù)載均衡ELB
      相關(guān)文章
      亚洲乱码卡三乱码新区| 亚洲精品国产字幕久久不卡| 亚洲日韩激情无码一区| 国产偷国产偷亚洲高清人| 亚洲av最新在线观看网址| 亚洲综合小说另类图片动图| 亚洲成A∨人片在线观看无码| 久久精品亚洲精品国产色婷| 久久精品亚洲综合| 亚洲成色www久久网站夜月| 亚洲va久久久噜噜噜久久| 亚洲va中文字幕无码久久| 精品国产亚洲一区二区三区| 亚洲av无码国产精品夜色午夜| 亚洲国产精品无码久久久蜜芽| 亚洲va无码手机在线电影| 久久国产亚洲观看| 亚洲综合网美国十次| 亚洲最大福利视频网站| 亚洲狠狠狠一区二区三区| 亚洲国产精品专区| 亚洲国产成+人+综合| 中文字幕乱码亚洲精品一区| 亚洲va中文字幕| 亚洲成aⅴ人片久青草影院| 亚洲国产天堂久久久久久| 国产日韩成人亚洲丁香婷婷| 国产亚洲精品久久久久秋霞| 亚洲韩国精品无码一区二区三区 | 国产精品高清视亚洲精品| 亚洲成_人网站图片| 亚洲狠狠色丁香婷婷综合| 无码欧精品亚洲日韩一区夜夜嗨 | 亚洲午夜精品第一区二区8050| 中文国产成人精品久久亚洲精品AⅤ无码精品| 亚洲一区无码精品色| 久久精品国产亚洲网站| 亚洲综合视频在线| 亚洲日本乱码卡2卡3卡新区| 亚洲AV综合色区无码一二三区 | 国产精品亚洲二区在线观看 |