欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解如何使用SpringBoot實現(xiàn)下載JSON文件

 更新時間:2025年02月12日 10:38:00   作者:小信丶  
在?Spring?Boot?中實現(xiàn)文件下載功能,可以通過將?JSON?字符串作為文件內(nèi)容返回給客戶端從而實現(xiàn)JSON文件下載效果,下面我們就來看看具體操作吧

概述

在 Spring Boot 中實現(xiàn)文件下載功能,可以通過將 JSON 字符串作為文件內(nèi)容返回給客戶端。以下是實現(xiàn)步驟和代碼示例:

實現(xiàn)步驟

定義接口:創(chuàng)建一個 REST 控制器,用于處理文件下載請求。

設(shè)置響應(yīng)頭:通過 HttpServletResponse 設(shè)置響應(yīng)頭,指定文件類型和下載文件名。

返回文件內(nèi)容:將 JSON 字符串寫入響應(yīng)輸出流。

代碼實現(xiàn)

1. 創(chuàng)建 Spring Boot 控制器

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
 
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
 
@RestController
@RequestMapping("/api")
public class FileDownloadController {
 
    @GetMapping("/download-json")
    public void downloadJsonFile(HttpServletResponse response) throws IOException {
        // 1. 準(zhǔn)備 JSON 字符串
        String jsonContent = "{\"name\":\"John\", \"age\":30, \"city\":\"New York\"}";
 
        // 2. 設(shè)置響應(yīng)頭
        response.setContentType("application/json"); // 文件類型為 JSON
        response.setHeader("Content-Disposition", "attachment; filename=\"data.json\""); // 設(shè)置下載文件名
 
        // 3. 將 JSON 字符串寫入響應(yīng)輸出流
        response.getOutputStream().write(jsonContent.getBytes(StandardCharsets.UTF_8));
        response.getOutputStream().flush();
    }
}

2. 運(yùn)行并測試

啟動 Spring Boot 應(yīng)用。

在瀏覽器中訪問接口地址,例如:http://localhost:8080/api/download-json。

瀏覽器會自動下載一個名為 data.json 的文件,文件內(nèi)容為:

{"name":"John", "age":30, "city":"New York"}

關(guān)鍵點(diǎn)說明

1.HttpServletResponse:

  • 用于設(shè)置響應(yīng)頭和輸出流。
  • setContentType("application/json"):指定文件類型為 JSON。
  • setHeader("Content-Disposition", "attachment; filename=\"data.json\""):指定文件名為 data.json,并告訴瀏覽器以附件形式下載。

2.文件內(nèi)容寫入:

  • 使用 response.getOutputStream().write() 將 JSON 字符串寫入響應(yīng)輸出流。
  • 確保使用 StandardCharsets.UTF_8 指定字符編碼,避免亂碼問題。

3.文件名:

可以根據(jù)需要動態(tài)生成文件名,例如:

String fileName = "data_" + System.currentTimeMillis() + ".json";
response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");

擴(kuò)展功能

動態(tài)生成 JSON 內(nèi)容:可以從數(shù)據(jù)庫或其他服務(wù)中獲取數(shù)據(jù),動態(tài)生成 JSON 字符串。

壓縮文件下載:如果需要下載壓縮文件(如 .zip),可以使用 ZipOutputStream 將多個文件打包后返回。

大文件下載:對于大文件,可以使用分塊傳輸(Transfer-Encoding: chunked)來優(yōu)化性能。

示例:動態(tài)生成 JSON 內(nèi)容

@GetMapping("/download-dynamic-json")
public void downloadDynamicJsonFile(HttpServletResponse response) throws IOException {
    // 動態(tài)生成 JSON 數(shù)據(jù)
    Map<String, Object> data = new HashMap<>();
    data.put("timestamp", System.currentTimeMillis());
    data.put("message", "Hello, this is a dynamic JSON file!");
 
    // 將 Map 轉(zhuǎn)換為 JSON 字符串
    String jsonContent = new ObjectMapper().writeValueAsString(data);
 
    // 設(shè)置響應(yīng)頭
    response.setContentType("application/json");
    response.setHeader("Content-Disposition", "attachment; filename=\"dynamic_data.json\"");
 
    // 寫入響應(yīng)輸出流
    response.getOutputStream().write(jsonContent.getBytes(StandardCharsets.UTF_8));
    response.getOutputStream().flush();
}

訪問 http://localhost:8080/api/download-dynamic-json,會下載一個包含動態(tài)生成內(nèi)容的 JSON 文件。

到此這篇關(guān)于詳解如何使用SpringBoot實現(xiàn)下載JSON文件的文章就介紹到這了,更多相關(guān)SpringBoot下載JSON內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java源碼刨析之ArrayQueue

    Java源碼刨析之ArrayQueue

    在本篇文章當(dāng)中主要給大家介紹一個比較簡單的JDK為我們提供的容器ArrayQueue,這個容器主要是用數(shù)組實現(xiàn)的一個單向隊列,整體的結(jié)構(gòu)相對其他容器來說就比較簡單了
    2022-07-07
  • Java中xxl-job實現(xiàn)分片廣播任務(wù)的示例

    Java中xxl-job實現(xiàn)分片廣播任務(wù)的示例

    本文主要介紹了Java中xxl-job實現(xiàn)分片廣播任務(wù)的示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • java+mysql模擬實現(xiàn)銀行系統(tǒng)

    java+mysql模擬實現(xiàn)銀行系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了java+mysql模擬實現(xiàn)銀行系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • Java(SpringBoot)項目打包(構(gòu)建)成Docker鏡像的幾種常見方式

    Java(SpringBoot)項目打包(構(gòu)建)成Docker鏡像的幾種常見方式

    在對Spring Boot應(yīng)用程序進(jìn)行Docker化時,為應(yīng)用程序選擇正確的基礎(chǔ)鏡像非常重要,下面這篇文章主要給大家介紹了關(guān)于Java(SpringBoot)項目打包(構(gòu)建)成Docker鏡像的幾種常見方式,需要的朋友可以參考下
    2023-12-12
  • @RunWith(SpringJUnit4ClassRunner.class)報錯問題及解決

    @RunWith(SpringJUnit4ClassRunner.class)報錯問題及解決

    這篇文章主要介紹了@RunWith(SpringJUnit4ClassRunner.class)報錯問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • 關(guān)于SpringBoot獲取IOC容器中注入的Bean(推薦)

    關(guān)于SpringBoot獲取IOC容器中注入的Bean(推薦)

    本文通過實例代碼給大家詳解了springboot獲取ioc容器中注入的bean問題,非常不錯,具有一定的參考借鑒價值,需要的朋友參考下吧
    2018-05-05
  • 深入分析JAVA Vector和Stack的具體用法

    深入分析JAVA Vector和Stack的具體用法

    這篇文章主要介紹了深入分析JAVA Vector和Stack的具體用法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-12-12
  • Spring Boot 簡介(入門篇)

    Spring Boot 簡介(入門篇)

    Spring Boot是由Pivotal團(tuán)隊提供的全新框架,其設(shè)計目的是用來簡化新Spring應(yīng)用的初始搭建以及開發(fā)過程。下面通過本文給大家介紹spring boot相關(guān)知識,需要的的朋友參考下吧
    2017-04-04
  • 微信公眾平臺開發(fā)實戰(zhàn)Java版之微信獲取用戶基本信息

    微信公眾平臺開發(fā)實戰(zhàn)Java版之微信獲取用戶基本信息

    這篇文章主要介紹了微信公眾平臺開發(fā)實戰(zhàn)Java版之微信獲取用戶基本信息 的相關(guān)資料,需要的朋友可以參考下
    2015-12-12
  • 基于SpringBoot實現(xiàn)自動裝配返回屬性的設(shè)計思路

    基于SpringBoot實現(xiàn)自動裝配返回屬性的設(shè)計思路

    這篇文章主要介紹了基于SpringBoot實現(xiàn)自動裝配返回屬性,這里涉及到的技術(shù)知識點(diǎn)有注解解析器,為什么用ResponseBodyAdvice這里解析?不在Filter,Interceptors,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2022-03-03

最新評論