使用Java根據(jù)文件路徑下載zip文件到本地代碼示例
需求:
下載目標(biāo)文件,其中目標(biāo)文件是本地某個(gè)文件中的zip文件,如:D:/CODE/test.zip。
1. 代碼示例:
/** * 下載目標(biāo)文件,其中目標(biāo)文件是zip文件 * * @param targetFile 目前文件 * @param response * @return */ @GetMapping("/download") @ApiOperation("下載目標(biāo)文件,其中目標(biāo)文件是zip文件") public void download(@RequestParam String targetFile, HttpServletResponse response) { // 讀取目標(biāo)zip文件,并利用response輸出 D:\CODE\Git_dy String folderPath = "D:/CODE/"; String filePath = folderPath + targetFile; try (FileInputStream fileInputStream = new FileInputStream(filePath)) { response.setContentType("application/octet-stream"); response.setHeader("Content-Disposition", "attachment;filename=\"" + targetFile + "\""); response.setHeader("Access-Control-Allow-Origin", "*"); File downloadFile = new File(filePath); if (downloadFile.exists()) { FileInputStream myStream = new FileInputStream(filePath); IOUtils.copy(myStream, response.getOutputStream()); } response.flushBuffer(); log.info("獲取文件成功!"); } catch (IOException e) { log.error(e.getMessage()); } }
其中:IOUtils的包是:package org.apache.tomcat.util.http.fileupload
2. 代碼解析:
在response.setHeader(name, value)方法中,name參數(shù)表示要設(shè)置的HTTP響應(yīng)頭的名稱,value參數(shù)表示該響應(yīng)頭的值。HTTP響應(yīng)頭允許服務(wù)器向?yàn)g覽器傳遞關(guān)于響應(yīng)的一些元信息。
在包org.springframework.http下面:包含了各種請(qǐng)求頭名稱:如
以下是一些常見的HTTP響應(yīng)頭名稱及其示例:
response.setHeader("Content-Type", "text/html; charset=UTF-8"); response.setHeader("Content-Disposition", "attachment; filename=\"example.txt\""); response.setHeader("Cache-Control", "max-age=3600"); response.setHeader("Expires", "Thu, 01 Dec 2023 16:00:00 GMT"); response.setHeader("Set-Cookie", "sessionid=123456789; Path=/; Secure; HttpOnly"); response.setHeader("Location", "https://www.example.com"); String contentType = HttpHeaders.CONTENT_TYPE; String contentDisposition = HttpHeaders.CONTENT_DISPOSITION; String cacheControl = HttpHeaders.CACHE_CONTROL; String expires = HttpHeaders.EXPIRES; String setCookie = HttpHeaders.SET_COOKIE; String location = HttpHeaders.LOCATION;
- Content-Type: 指定響應(yīng)體的MIME類型,告訴瀏覽器如何處理響應(yīng)的內(nèi)容。
- Content-Disposition: 設(shè)置下載的文件名和方式。通常用于文件下載時(shí),指定文件名和打開方式。
- Cache-Control: 控制緩存的行為,例如緩存的有效時(shí)間和是否允許緩存。
- Expires: 設(shè)置響應(yīng)的過期時(shí)間,用于控制瀏覽器是否需要重新請(qǐng)求資源。
- Set-Cookie: 設(shè)置一個(gè)HTTP Cookie,用于在客戶端存儲(chǔ)會(huì)話信息或其他數(shù)據(jù)。
- Location: 用于重定向,指示瀏覽器應(yīng)該跳轉(zhuǎn)到哪個(gè)URL。
"application/octet-stream"是一個(gè)通用的MIME類型,用于表示未知的二進(jìn)制數(shù)據(jù)。在HTTP響應(yīng)頭中,如果服務(wù)器不知道要傳輸?shù)臄?shù)據(jù)的具體MIME類型,通常會(huì)使用"application/octet-stream"來(lái)表示通用的二進(jìn)制數(shù)據(jù)類型。
HttpHeaders.ACCESS_CONTROL_ALLOW_ORIGIN是一個(gè)HTTP響應(yīng)頭,用于實(shí)現(xiàn)跨域資源共享(Cross-Origin Resource Sharing,CORS)。CORS是一種機(jī)制,允許Web瀏覽器在同源策略限制下向不同源(域名、端口、協(xié)議)的服務(wù)器發(fā)送跨域請(qǐng)求。
- *: 表示允許任意源(任意域名、任意端口、任意協(xié)議)的請(qǐng)求訪問資源,這樣的配置允許所有網(wǎng)站訪問資源,但可能會(huì)存在安全風(fēng)險(xiǎn),不推薦在生產(chǎn)環(huán)境中使用。
- 具體的域名: 表示允許特定的域名訪問資源,例如http://example.com,這樣的配置只允許example.com域名的請(qǐng)求訪問資源。
總結(jié)
到此這篇關(guān)于使用Java根據(jù)文件路徑下載zip文件到本地的文章就介紹到這了,更多相關(guān)Java下載zip文件到本地內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
mybatis連接mysql的實(shí)現(xiàn)過程
通過配置Maven的pom文件,可以簡(jiǎn)化MyBatis連接數(shù)據(jù)庫(kù)的過程,免去手動(dòng)下載和導(dǎo)入各種依賴包的麻煩,本文介紹了如何利用Maven導(dǎo)入MyBatis及其他相關(guān)依賴,如Junit、MySQL連接驅(qū)動(dòng)、Druid連接池和Dbutil等,以簡(jiǎn)化數(shù)據(jù)庫(kù)操作和測(cè)試2024-10-10利用consul在spring boot中實(shí)現(xiàn)分布式鎖場(chǎng)景分析
這篇文章通過場(chǎng)景分析給大家介紹如何利用consul在spring boot中實(shí)現(xiàn)簡(jiǎn)單的分布式鎖功能,代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2021-09-09Spring Boot集成Spring Cloud Security進(jìn)行安全增強(qiáng)的方法
Spring Cloud Security是Spring Security的擴(kuò)展,它提供了對(duì)Spring Cloud體系中的服務(wù)認(rèn)證和授權(quán)的支持,包括OAuth2、JWT等,這篇文章主要介紹了Spring Boot集成Spring Cloud Security進(jìn)行安全增強(qiáng),需要的朋友可以參考下2024-11-11JVM---jstack分析Java線程CPU占用,線程死鎖的解決
這篇文章主要介紹了JVM---jstack分析Java線程CPU占用,線程死鎖的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2020-09-09java web實(shí)現(xiàn)分頁(yè)查詢實(shí)例方法
在本篇文章里我們給大家分享了java web實(shí)現(xiàn)分頁(yè)查詢的詳細(xì)方法知識(shí)點(diǎn),有需要的朋友們參考學(xué)習(xí)下。2018-10-10Spring創(chuàng)建bean對(duì)象三種方式代碼實(shí)例
這篇文章主要介紹了Spring創(chuàng)建bean對(duì)象三種方式代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07SpringBoot實(shí)現(xiàn)識(shí)別圖片中的身份證號(hào)與營(yíng)業(yè)執(zhí)照信息
這篇文章主要為大家詳細(xì)介紹了SpringBoot如何實(shí)現(xiàn)識(shí)別圖片中的身份證號(hào)與營(yíng)業(yè)執(zhí)照信息,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2024-01-01