最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用Java根據(jù)文件路徑下載zip文件到本地代碼示例

 更新時(shí)間:2024年03月25日 10:17:59   作者:北暮城南  
在開(kāi)發(fā)過(guò)程中我們會(huì)遇到需要對(duì)文件進(jìn)行壓縮并下載的功能需求,這篇文章主要給大家介紹了關(guān)于如何使用Java根據(jù)文件路徑下載zip文件到本地的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下

需求:

下載目標(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)求頭名稱:如

以下是一些常見(jiàn)的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í),指定文件名和打開(kāi)方式。
  • Cache-Control: 控制緩存的行為,例如緩存的有效時(shí)間和是否允許緩存。
  • Expires: 設(shè)置響應(yīng)的過(guò)期時(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èn)資源,這樣的配置允許所有網(wǎng)站訪問(wèn)資源,但可能會(huì)存在安全風(fēng)險(xiǎn),不推薦在生產(chǎn)環(huán)境中使用。
  • 具體的域名: 表示允許特定的域名訪問(wèn)資源,例如http://example.com,這樣的配置只允許example.com域名的請(qǐng)求訪問(wèn)資源。

總結(jié) 

到此這篇關(guān)于使用Java根據(jù)文件路徑下載zip文件到本地的文章就介紹到這了,更多相關(guān)Java下載zip文件到本地內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MyBatis-plus+達(dá)夢(mèng)數(shù)據(jù)庫(kù)實(shí)現(xiàn)自動(dòng)生成代碼的示例

    MyBatis-plus+達(dá)夢(mèng)數(shù)據(jù)庫(kù)實(shí)現(xiàn)自動(dòng)生成代碼的示例

    這篇文章主要介紹了MyBatis-plus+達(dá)夢(mèng)數(shù)據(jù)庫(kù)實(shí)現(xiàn)自動(dòng)生成代碼的示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • java異常處理throws完成異常拋出詳解

    java異常處理throws完成異常拋出詳解

    這篇文章主要介紹了java異常處理中throws完成異常拋出示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家學(xué)有所得多多進(jìn)步
    2021-10-10
  • Java的函數(shù)方法詳解(含漢諾塔問(wèn)題)

    Java的函數(shù)方法詳解(含漢諾塔問(wèn)題)

    漢諾塔問(wèn)題是一個(gè)經(jīng)典的遞歸問(wèn)題,下面這篇文章主要給大家介紹了關(guān)于Java函數(shù)方法(含漢諾塔問(wèn)題)的相關(guān)資料,文中通過(guò)圖文以及代碼示例介紹的非常詳細(xì),需要的朋友可以參考下
    2023-11-11
  • Java實(shí)現(xiàn)局域網(wǎng)聊天小程序

    Java實(shí)現(xiàn)局域網(wǎng)聊天小程序

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)局域網(wǎng)聊天小程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • java截取圖片示例

    java截取圖片示例

    這篇文章主要介紹了java截取圖片示例,把代碼中的圖片路徑改成自己的圖片,運(yùn)行就可以看到效果了,需要的朋友可以參考下
    2014-03-03
  • Spring aop失效的幾種解決方案

    Spring aop失效的幾種解決方案

    這篇文章主要介紹了Spring aop失效的幾種解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • java字符流緩沖區(qū)詳解

    java字符流緩沖區(qū)詳解

    這篇文章主要為大家詳細(xì)介紹了java字符流緩沖區(qū)的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • SpringBoot讀取資源目錄中JSON文件的方法實(shí)例

    SpringBoot讀取資源目錄中JSON文件的方法實(shí)例

    最近做項(xiàng)目遇到需要將json類型的配置文件引用到項(xiàng)目中,已經(jīng)將讀取json文件的方法封裝成工具類,下面這篇文章主要給大家介紹了關(guān)于SpringBoot讀取資源目錄中JSON文件的相關(guān)資料,需要的朋友可以參考下
    2023-04-04
  • Java多線程 Guarded Suspension設(shè)計(jì)模式

    Java多線程 Guarded Suspension設(shè)計(jì)模式

    這篇文章主要介紹了Java多線程 Guarded Suspension設(shè)計(jì)模式,Guarded Suspension意為保護(hù)暫停,其核心思想是僅當(dāng)服務(wù)進(jìn)程準(zhǔn)備好時(shí),才提供服務(wù),文章圍繞Java多線程 Guarded Suspension展開(kāi)內(nèi)容,需要的朋友可以參考一下
    2021-10-10
  • 如何把本地idea上的項(xiàng)目上傳到github上(推薦)

    如何把本地idea上的項(xiàng)目上傳到github上(推薦)

    這篇文章主要介紹了如何把本地idea上的項(xiàng)目上傳到github上,本文通過(guò)圖文的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07

最新評(píng)論

永新县| 沙河市| 夏津县| 巴彦淖尔市| 樟树市| 临武县| 六枝特区| 武定县| 凌源市| 柘城县| 雅江县| 正安县| 五大连池市| 富平县| 迁安市| 名山县| 如皋市| 惠安县| 宜州市| 嘉义市| 四子王旗| 鹰潭市| 多伦县| 淄博市| 冀州市| 肥城市| 黔江区| 杭锦旗| 河北省| 蒙城县| 海兴县| 德庆县| 团风县| 石柱| 吕梁市| 安达市| 息烽县| 台南市| 清镇市| 屏东县| 定州市|