springMVC-13 文件下載及上傳

文件下載-ResponseEntity<T>

說明

在SpringMVC中,通過返回ResponseEntity<T>的類型,可以實現文件下載的功能

核心代碼:就是設置HttpHeader

文件下載響應頭的設置

content-type? ? ? ? ? ? ? ? ? 指示響應內容的格式
content-disposition????????指示如何處理響應內容

一般有兩種方式:

content-disposition:inline? ? ? ? ? ? ? ? 以內聯形式,直接在頁面顯示
content-disposition:attchment? ? ? ? ?以附件形式,下載

應用實例

1.準備要下載的文件,復制到,web/directory/Deepseek.png

2.添加鏈接,web/json.jsp

<a href="<%=request.getContextPath()%>/json/download" >點擊下載文件</a>

3.增加方法,com/stein/springMVC/json/handler/JsonHandler.java

@RequestMapping("/download")@ResponseBodypublic ResponseEntity<byte[]> downloadFile(HttpSession session) {//1.獲取資源的輸入流InputStream resourceAsStream = session.getServletContext().getResourceAsStream("/directory/Deepseek.png");//2.設置讀取資源的內存大小byte[] bytes;try {bytes = new byte[resourceAsStream.available()];//3.將資源讀取到內存中去resourceAsStream.read(bytes);} catch (IOException e) {throw new RuntimeException(e);}//4.提供構造器的參數public ResponseEntity(@Nullable T body, @Nullable MultiValueMap<String, String> headers, HttpStatus status) {//bytes就是要傳輸的數據body//headers是傳輸報頭HttpHeaders httpHeaders = new HttpHeaders();//設置傳輸內容,attachment表示以附件的形式進行下載,下載時的文件名我現在設置這個httpHeaders.add("Content-Disposition","attachment;filename=DeepseekCustom.jpg");//5.指定成功下載時的狀態碼HttpStatus httpStatus = HttpStatus.OK;//6.創建響應實體,并返回return new ResponseEntity<>(bytes, httpHeaders,HttpStatus.OK);}

4.測試。點擊下載后,彈出另存為窗口

postman再測

因為postman沒有解析jpg格式,所以顯示的亂碼。

文件上傳

  • 基本介紹

1.Spring MVC為文件上傳提供了直接的支持,這種支持是通過即插即用的MultipartResolver實現的。
Spring用Jakarta Commons FileUpload技術實現了一個MultipartResolver實現類:
CommonsMultipartResovler


2.Spring MVC上下文中默認沒有裝配MultipartResovler,因此默認情況下不能處理文件的上傳工作,如果想使用Spring的文件上傳功能,需現在上下文中配置MultipartResolver

  • 應用實例

1.引入jar包

2.創建web/upload.jsp

????????enctype:encodetype編碼類型默i認是application/x-www-urlencoded即url編碼這種編碼不適二進制文件數據的提交,一般是適用文本

????????如果是要進行二進制文件的提交enctype要指定multipart/form-data表示表單提交的數據是有多個部分組成,也就是可以提交二進制數據和文本數據

    <h1>文件上傳</h1><form action="<%=request.getContextPath()%>/upload" method="post" enctype="multipart/form-data">文件介紹:<input type="text" name="introduce"><br>選擇文件:<input type="file" name="file"><br><input type="submit" value="提交"></form>

3.配置文件上傳解析器,web/WEB-INF/springMVC-servlet.xml

    <bean id="multipartResolver"class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/>

4.創建com/stein/springMVC/upload/FileUploadHandler.java

@Controller
public class FileUploadHandler {@RequestMapping("/upload")public String upload(@RequestParam("file")MultipartFile file,//設定好與前端一直的名稱后,后面這個變量名file就可以隨便改了HttpServletRequest request,String introduce) throws IOException {String originalFilename = file.getOriginalFilename();System.out.println("上傳文件的名字=" + originalFilename);System.out.println("introduce: " + introduce);//參數填什么?這兒是打算保存的路徑,可以是根路徑"/",也可以是全路徑("/img/"+originalFilename)//要上傳的文件保存的全路徑String realPath = request.getServletContext().getRealPath("/");System.out.println("realPath = " + realPath);//上傳文件的文件名。可以一步生成。// 注意:如果要創建img文件夾的話,要在web目錄里面提前建好,同時檢查out目錄里面是否已經重構,否則上傳會報錯//String fileFullPath =request.getServletContext().getRealPath("/img/"+originalFilename);String fileFullPath = realPath + File.separator + originalFilename;System.out.println("fileFullPath = " + fileFullPath);File localFile = new File(fileFullPath);file.transferTo(localFile);return "success";}
}

5.測試

上傳成功,success!

6.postman再測。成功!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/84799.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/84799.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/84799.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

數據庫學習筆記(十六)--控住流程與游標

前言&#xff1a; 學習和使用數據庫可以說是程序員必須具備能力&#xff0c;這里將更新關于MYSQL的使用講解&#xff0c;大概應該會更新30篇&#xff0c;涵蓋入門、進階、高級(一些原理分析);這一篇和上一篇差不多&#xff0c;當做擴展&#xff0c;用到的時候再查即可(畢竟數據…

《Origin畫百圖》之核密度圖

核密度圖&#xff08;Kernel Density Plot&#xff09; 是一種用于展示數據分布形態的可視化工具&#xff0c;它通過平滑的曲線來估計數據的概率密度函數&#xff0c;相比直方圖能更細膩地呈現數據的分布特征。 具體步驟&#xff1a; &#xff08;1&#xff09;選中數據&#…

使用Apache POI操作Word文檔:從入門到實戰

Apache POI是Java生態中最流行的Microsoft Office文檔操作庫之一&#xff0c;它為Word文檔&#xff08;包括傳統的.doc格式和現代的.docx格式&#xff09;提供了全面的API支持。本文將詳細介紹如何使用Apache POI創建、讀取和修改Word文檔。 一、Apache POI簡介與環境準備 1.…

CentOS 7.3環境中部署Kerberos集群

CentOS 7.3環境中部署Kerberos集群 文章目錄 CentOS 7.3環境中部署Kerberos集群環境安裝服務包 Kerberos MS 規劃安裝 KDC Master Server配置文件/etc/krb5.conf/var/kerberos/krb5kdc/kdc.conf/var/kerberos/krb5kdc/kadm5.acl 創建Kerberos數據庫啟動與停止服務創建管理員創建…

1 Studying《Arm A715 Software Optimization Guide》

目錄 1 Introduction 1.1 Product revision status 1.2 Intended audience 1.3 Scope 1.4 Conventions 1.5 Useful resources 2 Overview 2.1 Pipeline overview 3 Instruction characteristics 3.1 Instruction tables 3.2 Legend for reading the utilized pipeli…

第二十四章 24.QoS(CCNA)

第二十四章 24.QoS(CCNA) 介紹了switch QoS的配置方法 注釋&#xff1a; 學習資源是B站的CCNA by Sean_Ning CCNA 最新CCNA 200-301 視頻教程(含免費實驗環境&#xff09; PS&#xff1a;喜歡的可以去買下他的課程&#xff0c;不貴&#xff0c;講的很細 To be continued……

什么是穩定幣?

穩定幣&#xff08;Stablecoin&#xff09;是一種特殊的加密貨幣&#xff0c;其核心目標是維持價格穩定&#xff0c;通常與某種穩定資產&#xff08;如美元、黃金等&#xff09;掛鉤。 一、為什么需要穩定幣&#xff1f; 普通加密貨幣&#xff08;如比特幣、以太坊&#xff09…

伺服學習(IS620N)

DI 端子的基本概念 DI 端子是伺服驅動器上的數字輸入接口&#xff0c;用于接收外部開關、按鈕或PLC的24V/0V信號。每個端子的功能可通過參數靈活配置&#xff08;如啟停、限位等&#xff09;。 核心要點 功能設置&#xff1a;通過驅動器參數組&#xff08;如H03&#xff09;…

基于Python的氣象數據分析及可視化研究

目錄 一.&#x1f981;前言二.&#x1f981;開源代碼與組件使用情況說明三.&#x1f981;核心功能1. ?算法設計2. ?PyEcharts庫3. ?Flask框架4. ?爬蟲5. ?部署項目 四.&#x1f981;演示效果1. 管理員模塊1.1 用戶管理 2. 用戶模塊2.1 登錄系統2.2 查看實時數據2.3 查看天…

Excel處理控件Aspose.Cells教程:使用 C# 在 Excel 中應用數據驗證

Excel 中的數據驗證可確保用戶在工作表中僅輸入有效數據。在設計表單、收集數據或構建財務模型時&#xff0c;數據驗證有助于維護結構并最大限度地減少用戶錯誤。在本文中&#xff0c;我們將向您展示如何使用 C# 以編程方式在 Excel 中應用數據驗證。 Aspose.Cells 最新版下載…

AI應用:計算機視覺相關技術總結

計算機視覺概述 計算機視覺&#xff08;Computer Vision, CV&#xff09;是一門讓計算機從圖像或視頻中 “理解” 和 “解釋” 視覺信息的技術&#xff0c;涉及多學科交叉&#xff08;如數學、統計學、機器學習、信號處理等&#xff09;。以下從技術體系、核心任務、關鍵技術、…

人口販賣暑期威脅消解:算法協同提升安全預警

隨著暑期的到來&#xff0c;人員流動加劇&#xff0c;人口販賣等惡性犯罪活動進入高發階段&#xff0c;景區、車站、商場等公共場所成為潛在風險區域。傳統安防手段在應對此類隱蔽性強、危害性大的犯罪時顯得力不從心。為此&#xff0c;引入基于視覺分析的多維度算法技術&#…

【DSP筆記 · 第3章】數字世界的“棱鏡”:離散傅里葉變換(DFT)完全解析

數字世界的“棱鏡”&#xff1a;離散傅里葉變換&#xff08;DFT&#xff09;完全解析 在上一章&#xff0c;我們探索了Z變換和離散時間傅里葉變換&#xff08;DTFT&#xff09;。我們知道&#xff0c;DTFT是一個無比強大的理論工具&#xff0c;它能將一個時域離散序列的“基因…

卷積神經網絡的參數量及尺度變化計算

文章目錄 前言1.卷積2.參數量的計算2.1案例一2.2案例二 3.奇怪的優化思想3.1使用小核卷積替換大核卷積3.2卷積核11的應用 4.輸出圖像尺寸的計算4.1Same convolution4.2具體計算規則4.3轉置卷積 小結 前言 本篇博客主要介紹卷積基本概念&#xff0c;卷積神經網絡的參數量計算、…

OpenCV——圖像平滑

圖像平滑 一、圖像的噪聲1.1、噪聲來源1.2、噪聲類型1.3、噪聲模擬 二、濾波器三、線性濾波3.1、均值濾波3.2、方框濾波3.3、高斯濾波 四、非線性濾波4.1、中值濾波4.2、雙邊濾波 圖像在采集和傳輸過程中容易受到各種因素的影響而產生噪聲&#xff0c;而噪聲會對圖像的正確解讀…

鴻蒙系統備份恢復

鴻蒙系統嘗試者&#xff0c;在純血鴻蒙與鴻蒙4.2/4.3之前反復橫跳&#xff0c;中間折騰… 目錄 鴻蒙4.2/4.3升級鴻蒙5.0系統備份 鴻蒙5.0回退鴻蒙4.2/4.3系統備份備份恢復 華為手機助手注意 鴻蒙4.2/4.3升級鴻蒙5.0 系統備份 云空間備份手機本地備份華為手機助手備份 鴻蒙5.…

JS進階 Day03

1.兩種面向編程思想 2.構造函數實現封裝以及存在的問題 下面就引出了原型對象 3.原型對象prototype 共享原理圖&#xff1a; 4.數組擴展案例-求最大值和數組求和 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><…

visual studio小番茄插件某些快捷鍵失效

問題 AltO 切換頭文件和源文件失效。 背景 最近升級了 visual studio&#xff0c;多了一些插件 原因 Alt O 快捷鍵被其他插件占用了 解決方案 工具 → 選項 → 環境 → 鍵盤 搜索這個 VAssistX.OpenCorrespondingFile&#xff08;切換頭/源文件&#xff09; 發現命令的快…

基于單片機的PT100溫度變送器設計

基于單片機的PT100溫度變送器設計 文章目錄 基于單片機的PT100溫度變送器設計前言一、資源分享二、系統框架三、硬件準備1.主控制器2、PT100溫度傳感器3、顯示屏4、WIFI模塊5、USB轉RS485模塊6、SP3485EN7、K11-11D3 四、設計PCB1、安裝下載立創EDA專業版2、畫原理圖3、擺放元器…

Git 清理指南:如何從版本庫中移除誤提交的文件(保留本地文件)

場景 在 Git 項目中&#xff0c;我們可能會不小心提交了本應忽略的文件&#xff08;如 node_modules/、.env、*.log 等&#xff09;&#xff0c;導致倉庫體積膨脹或敏感信息泄露。本文介紹如何從 Git 歷史中徹底刪除這些文件&#xff0c;同時保留本地文件。 解決方案 1. 確認…