摘要:一添加項(xiàng)目依賴二上傳上傳文件存儲(chǔ)目錄上傳配置上傳文件最大值檢測(cè)是否為多媒體上傳如果不是則停止表單必須包含配置上傳參數(shù)設(shè)置最大文件上傳值中文處理構(gòu)造臨時(shí)路徑來(lái)存儲(chǔ)上傳的文件這個(gè)路徑相對(duì)當(dāng)前應(yīng)用的目錄如果目錄不存在則創(chuàng)建解析請(qǐng)求的內(nèi)容
一、添加項(xiàng)目依賴(gradle)
dependencies { compile group: "javax.servlet", name: "javax.servlet-api", version: "3.1.0" compile group: "commons-fileupload", name: "commons-fileupload", version: "1.3.3" compile group: "javax.servlet", name: "jstl", version: "1.2" }二、上傳servlet
import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.IOException; import java.io.PrintWriter; import java.util.*; public class UploadServlet extends HttpServlet { // 上傳文件存儲(chǔ)目錄 private static final String UPLOAD_DIRECTORY = "upload"; // 上傳配置 上傳文件最大值 private static final int MAX_FILE_SIZE = 1024 * 1024 * 40; // 40MB @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doPost(req, resp); } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 檢測(cè)是否為多媒體上傳 if (!ServletFileUpload.isMultipartContent(request)) { // 如果不是則停止 PrintWriter writer = response.getWriter(); writer.println("Error: 表單必須包含 enctype=multipart/form-data"); writer.flush(); return; } // 配置上傳參數(shù) DiskFileItemFactory factory = new DiskFileItemFactory(); ServletFileUpload upload = new ServletFileUpload(factory); // 設(shè)置最大文件上傳值 upload.setFileSizeMax(MAX_FILE_SIZE); // 中文處理 upload.setHeaderEncoding("UTF-8"); // 構(gòu)造臨時(shí)路徑來(lái)存儲(chǔ)上傳的文件 // 這個(gè)路徑相對(duì)當(dāng)前應(yīng)用的目錄 String uploadPath = request.getServletContext().getRealPath("./") + File.separator + UPLOAD_DIRECTORY; // 如果目錄不存在則創(chuàng)建 File uploadDir = new File(uploadPath); if (!uploadDir.exists()) { uploadDir.mkdir(); } List三、下載servlet
import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.net.URLEncoder; public class DownloadServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8"); String path = request.getParameter("path"); //處理請(qǐng)求 //讀取要下載的文件 File f = new File(path); if (f.exists()) { FileInputStream fis = new FileInputStream(f); String filename = URLEncoder.encode(f.getName(), "utf-8"); //解決中文文件名下載后亂碼的問題 byte[] b = new byte[fis.available()]; fis.read(b); response.setCharacterEncoding("utf-8"); response.setHeader("Content-Disposition", "attachment; filename=" + filename + ""); //獲取響應(yīng)報(bào)文輸出流對(duì)象 ServletOutputStream out = response.getOutputStream(); //輸出 out.write(b); out.flush(); out.close(); } } }四、配置web.xml
五、上傳的jspuploadServlet stu.servlet.UploadServlet downloadServlet stu.servlet.DownloadServlet uploadServlet /uploadServlet downloadServlet /downloadServlet
<%@ page contentType="text/html;charset=UTF-8" language="java" %>六、下載的jsp$Title$ 文件上傳
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>Title ${message}文件列表
文件 | 下載 |
${item.name} | 下載 |
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/71444.html
摘要:本文示例見這個(gè)項(xiàng)目的分支下的項(xiàng)目這個(gè)項(xiàng)目是為本文單獨(dú)建立的。的內(nèi)置支持用于處理應(yīng)用程序中的文件上傳。提供了一個(gè)的實(shí)現(xiàn),使用了的和一些其他的東西,用于對(duì)的請(qǐng)求的解析。首先,創(chuàng)建一個(gè)帶有的表單,這樣用戶就可以通過這個(gè)表單上傳文件了。 ??本文示例見這個(gè)項(xiàng)目的 upload 分支下的項(xiàng)目(這個(gè)項(xiàng)目是為本文單獨(dú)建立的)。 ??WARNING:本文中有一部分直接把英文原文搬過來(lái)了,我的翻譯能力實(shí)...
摘要:技術(shù)現(xiàn)在提供開箱即用的上傳文件方法,所以任何實(shí)現(xiàn)規(guī)范的容器都能通過對(duì)象解析請(qǐng)求和生成有效的附件。用來(lái)在處理時(shí)存儲(chǔ)臨時(shí)文件或者是文件大小超過設(shè)置的值。默認(rèn)是允許上傳的最大文件大小,單位是。如果上傳的文件超過限制,容器將拋出異常。 支持文件上傳是web程序最基本和常見的需求。在早期的servlet規(guī)范中,實(shí)現(xiàn)文件上傳需要使用第三方庫(kù)或者復(fù)雜的輸入處理。針對(duì)此問題,servlet現(xiàn)在以通用和...
摘要:依賴于對(duì)請(qǐng)求的支持。使用解析兼容的沒有構(gòu)造器參數(shù),也沒有要設(shè)置的參數(shù),這樣,在應(yīng)用上下文中,將其聲明為就會(huì)非常簡(jiǎn)單。默認(rèn)是沒有限制的整個(gè)請(qǐng)求的容量。 Spring MVC 高級(jí)的技術(shù) 本章內(nèi)容: Spring MVC配置的替代方案 處理文件上傳 在控制器中處理異常 使用flash屬性 稍等還沒結(jié)束 說(shuō)明 如果你有幸能看到。后面的章節(jié)暫時(shí)不更新了,改變學(xué)習(xí)方式了。重要理解思想,這本書...
摘要:出現(xiàn)的目的同一樣也是要提到頁(yè)面中的腳本代碼。標(biāo)準(zhǔn)標(biāo)準(zhǔn)標(biāo)簽庫(kù)有個(gè)子庫(kù),但隨著發(fā)展,目前常使用的是他的核心庫(kù)標(biāo)簽庫(kù)標(biāo)簽庫(kù)的前綴下載與導(dǎo)入下載從的網(wǎng)站下載的包。 一、JSP技術(shù)1.jsp腳本和注釋jsp腳本:1) ----- 內(nèi)部的java代碼翻譯到service方法的內(nèi)部2) ----- 會(huì)被翻譯成service方法內(nèi)部out.print()3) ---- 會(huì)被翻譯成servlet的成員的...
摘要:于是提供了機(jī)制,使得從中讀往里寫變成異步動(dòng)作。這是因?yàn)榭蛻舳说臄?shù)據(jù)推送速度太慢了,容器先將收回,當(dāng)容器發(fā)現(xiàn)可以讀取到新數(shù)據(jù)的時(shí)候,再分配一個(gè)去讀,如此循環(huán)直到全部讀完為止。注意和不能同時(shí)使用。 Github地址 相關(guān)系列文章: Servlet 3.0 異步處理詳解 Spring MVC異步處理的幾種方式 Servlet Async Processing提供了一種異步請(qǐng)求處理的手段(...
閱讀 797·2019-08-30 15:54
閱讀 439·2019-08-30 12:51
閱讀 2022·2019-08-29 16:28
閱讀 2842·2019-08-29 16:10
閱讀 2331·2019-08-29 14:21
閱讀 409·2019-08-29 14:09
閱讀 2127·2019-08-23 16:13
閱讀 1236·2019-08-23 13:59