JavaWeb實現(xiàn)文件的上傳與下載
更新時間:2021年04月07日 14:53:24 作者:奮斗@拼搏@人生
這篇文章主要為大家詳細介紹了JavaWeb實現(xiàn)文件的上傳與下載,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
JavaWeb實現(xiàn)文件的上傳與下載,供大家參考,具體內容如下
第一步:導包
導入commons-fileupload-1.3.3.jar和commons-io-2.4.jar兩個依賴包
第二步:編寫前端頁面
1、提交頁面 index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <form action="${pageContext.request.contextPath }/fileUpload" method="post" enctype="multipart/form-data"> 頭像:<input type="file" name="img" accept="image/*"/> <input type="submit" value="提交"/> </form> </body> </html>
2、結果頁面 result.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <center> <a href="${pageContext.request.contextPath }/download?filename=${filename}" > <img alt="xx" src="${src }"> </a> </center> </body> </html>
第三步:編寫上傳和下載代碼
1、上傳圖片 fileUpload.java
package cn.yz123123.controller; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; 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; @WebServlet("/fileUpload") @MultipartConfig public class fileUpload extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //String username = request.getParameter("username"); Part part = request.getPart("img"); //獲取文件的真實名稱 String header = part.getHeader("content-disposition"); String realName = header.substring(header.indexOf("filename=")+10, header.length()-1); //獲取文件自身流 InputStream inputStream = part.getInputStream(); //獲取file真實路徑,如果沒有則創(chuàng)建 String dir = request.getServletContext().getRealPath("/file/"); File dirFile = new File(dir); //上面只是實例化了一個對象,并沒有真正的創(chuàng)建一個文件夾 if (!dirFile.exists()) { dirFile.mkdirs(); } //創(chuàng)建文件對象,并用流的形式寫在相應的文件夾中 File file = new File(dir, realName); FileOutputStream fileOutputStream = new FileOutputStream(file); byte[] buf = new byte[1024]; int len; while((len=inputStream.read(buf))!=-1) { fileOutputStream.write(buf, 0, len); } fileOutputStream.close(); inputStream.close(); //以下為測試 request.setAttribute("src", request.getContextPath()+"/file/"+realName); request.setAttribute("filename", realName); request.getRequestDispatcher("/result.jsp").forward(request, response); } }
2、下載圖片 fileDownload.java
package cn.yz123123.controller; import java.io.FileInputStream; import java.io.IOException; import java.util.UUID; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet(urlPatterns = "/download") public class fileDownload extends HttpServlet{ @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String filename = req.getParameter("filename"); //獲取文件的真實路徑 String filePath = req.getServletContext().getRealPath("/file/"+filename); FileInputStream fileInputStream = new FileInputStream(filePath); resp.setCharacterEncoding("UTF-8"); resp.setHeader("Content-Disposition","attachment;filename="+UUID.randomUUID()+filename); ServletOutputStream outputStream = resp.getOutputStream(); byte[] buf = new byte[1024]; int len; while((len=fileInputStream.read(buf))!=-1) { outputStream.write(buf, 0, len); } outputStream.close(); fileInputStream.close(); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { super.doGet(req, resp); } }
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
Springboot actuator生產就緒功能實現(xiàn)解析
這篇文章主要介紹了Springboot actuator生產就緒功能實現(xiàn)解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-05-05關于Mybatis中foreach遍歷Map的實現(xiàn)示例
這篇文章主要介紹了關于Mybatis中foreach遍歷Map的實現(xiàn)示例,MyBatis?是一款優(yōu)秀的半自動的ORM持久層框架,它支持自定義?SQL、存儲過程以及高級映射,需要的朋友可以參考下2023-05-05Java?SpringBoot?@Async實現(xiàn)異步任務的流程分析
這篇文章主要介紹了Java?SpringBoot?@Async實現(xiàn)異步任務,主要包括@Async?異步任務-無返回值,@Async?異步任務-有返回值,@Async?+?自定義線程池的操作代碼,需要的朋友可以參考下2022-12-12