摘要:一添加項目依賴二上傳上傳文件存儲目錄上傳配置上傳文件最大值檢測是否為多媒體上傳如果不是則停止表單必須包含配置上傳參數(shù)設置最大文件上傳值中文處理構造臨時路徑來存儲上傳的文件這個路徑相對當前應用的目錄如果目錄不存在則創(chuàng)建解析請求的內(nèi)容
一、添加項目依賴(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 { // 上傳文件存儲目錄 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 { // 檢測是否為多媒體上傳 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); // 設置最大文件上傳值 upload.setFileSizeMax(MAX_FILE_SIZE); // 中文處理 upload.setHeaderEncoding("UTF-8"); // 構造臨時路徑來存儲上傳的文件 // 這個路徑相對當前應用的目錄 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"); //處理請求 //讀取要下載的文件 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 + ""); //獲取響應報文輸出流對象 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} | 下載 |
文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://systransis.cn/yun/71444.html
摘要:本文示例見這個項目的分支下的項目這個項目是為本文單獨建立的。的內(nèi)置支持用于處理應用程序中的文件上傳。提供了一個的實現(xiàn),使用了的和一些其他的東西,用于對的請求的解析。首先,創(chuàng)建一個帶有的表單,這樣用戶就可以通過這個表單上傳文件了。 ??本文示例見這個項目的 upload 分支下的項目(這個項目是為本文單獨建立的)。 ??WARNING:本文中有一部分直接把英文原文搬過來了,我的翻譯能力實...
摘要:技術現(xiàn)在提供開箱即用的上傳文件方法,所以任何實現(xiàn)規(guī)范的容器都能通過對象解析請求和生成有效的附件。用來在處理時存儲臨時文件或者是文件大小超過設置的值。默認是允許上傳的最大文件大小,單位是。如果上傳的文件超過限制,容器將拋出異常。 支持文件上傳是web程序最基本和常見的需求。在早期的servlet規(guī)范中,實現(xiàn)文件上傳需要使用第三方庫或者復雜的輸入處理。針對此問題,servlet現(xiàn)在以通用和...
摘要:依賴于對請求的支持。使用解析兼容的沒有構造器參數(shù),也沒有要設置的參數(shù),這樣,在應用上下文中,將其聲明為就會非常簡單。默認是沒有限制的整個請求的容量。 Spring MVC 高級的技術 本章內(nèi)容: Spring MVC配置的替代方案 處理文件上傳 在控制器中處理異常 使用flash屬性 稍等還沒結束 說明 如果你有幸能看到。后面的章節(jié)暫時不更新了,改變學習方式了。重要理解思想,這本書...
摘要:出現(xiàn)的目的同一樣也是要提到頁面中的腳本代碼。標準標準標簽庫有個子庫,但隨著發(fā)展,目前常使用的是他的核心庫標簽庫標簽庫的前綴下載與導入下載從的網(wǎng)站下載的包。 一、JSP技術1.jsp腳本和注釋jsp腳本:1) ----- 內(nèi)部的java代碼翻譯到service方法的內(nèi)部2) ----- 會被翻譯成service方法內(nèi)部out.print()3) ---- 會被翻譯成servlet的成員的...
摘要:于是提供了機制,使得從中讀往里寫變成異步動作。這是因為客戶端的數(shù)據(jù)推送速度太慢了,容器先將收回,當容器發(fā)現(xiàn)可以讀取到新數(shù)據(jù)的時候,再分配一個去讀,如此循環(huán)直到全部讀完為止。注意和不能同時使用。 Github地址 相關系列文章: Servlet 3.0 異步處理詳解 Spring MVC異步處理的幾種方式 Servlet Async Processing提供了一種異步請求處理的手段(...
閱讀 838·2019-08-30 15:54
閱讀 450·2019-08-30 12:51
閱讀 2030·2019-08-29 16:28
閱讀 2854·2019-08-29 16:10
閱讀 2340·2019-08-29 14:21
閱讀 417·2019-08-29 14:09
閱讀 2139·2019-08-23 16:13
閱讀 1243·2019-08-23 13:59