国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

SpringBoot微服務(wù)項(xiàng)目,轉(zhuǎn)發(fā)并響應(yīng)下載請(qǐng)求

這篇具有很好參考價(jià)值的文章主要介紹了SpringBoot微服務(wù)項(xiàng)目,轉(zhuǎn)發(fā)并響應(yīng)下載請(qǐng)求。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

在微服務(wù)項(xiàng)目中,我經(jīng)常會(huì)碰到從一個(gè)微服務(wù)項(xiàng)目轉(zhuǎn)發(fā)下載請(qǐng)求并實(shí)現(xiàn)下載文件的需求,因此在此做一個(gè)轉(zhuǎn)發(fā)下載的示例??偟南螺d轉(zhuǎn)發(fā)流程如下,我會(huì)按照這個(gè)流程一一介紹下載流程。

?

SpringBoot微服務(wù)項(xiàng)目,轉(zhuǎn)發(fā)并響應(yīng)下載請(qǐng)求

?1、客戶端的下載請(qǐng)求

這里主要介紹controller層是如何接收客戶端發(fā)送請(qǐng)求的代碼,接收參數(shù)的代碼如下

@GetMapping(value = "downloadFile")
public void downloadFile( HttpServletResponse response) {


}

2、轉(zhuǎn)發(fā)服務(wù)器的下載請(qǐng)求

轉(zhuǎn)發(fā)服務(wù)器的下載請(qǐng)求主要通過Feign接口實(shí)現(xiàn),具體實(shí)現(xiàn)代碼如下:

Feign接口:

    @PostMapping(value = "/downloadFile")
    Response downloadFile();

Feign接口實(shí)現(xiàn)類:

    @Override
    public Response downloadFile() {
        return null;
    }

之后便可以利用Feign實(shí)現(xiàn)轉(zhuǎn)發(fā)了controller層代碼完善如下:

@GetMapping(value = "downloadFile")
public void downloadFile( HttpServletResponse response) {

        InputStream inputStream = null;
        try {
            Response serviceResponse = queryBranchService.downloadFile(url,sapNo);
        } catch (IOException e) {
            e.printStackTrace();
        }

}

3、最終服務(wù)器的下載請(qǐng)求響應(yīng)

該代碼的總體思路就是將文件變成輸出流并寫在響應(yīng)中,并返回給轉(zhuǎn)發(fā)服務(wù)器。

    @GetMapping(value = "downloadFile")
    public void downloadFile(HttpServletResponse response) {
        //獲取upload文件夾的路徑
        try {
            InputStream contentInput = OkHttpClientUtils.getImage(url, null);
            BufferedInputStream bufferedInputStream = new BufferedInputStream(contentInput);
            response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(sapNo+".png", "UTF-8"));
            BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(response.getOutputStream());
            int length = 0;
            byte[] temp = new byte[1024 * 10];
            while ((length = bufferedInputStream.read(temp)) != -1) {
                bufferedOutputStream.write(temp, 0, length);
            }
            bufferedOutputStream.flush();
            bufferedOutputStream.close();
            bufferedInputStream.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
            log.error(e.getMessage());
        } catch (IOException e) {
            e.printStackTrace();
            log.error(e.getMessage());
        }
    }

4、轉(zhuǎn)發(fā)服務(wù)器的下載請(qǐng)求響應(yīng)

對(duì)轉(zhuǎn)發(fā)服務(wù)器的controller層再繼續(xù)完善,完善的總思路拿到中轉(zhuǎn)服務(wù)器的響應(yīng),并拿出響應(yīng)中輸入流再變成輸出流回寫給客戶端文章來源地址http://www.zghlxwxcb.cn/news/detail-422120.html

@GetMapping(value = "downloadFile")
public void downloadFile( HttpServletResponse response) {

        InputStream inputStream = null;
        try {
                   InputStream inputStream = null;
        try {
            Response serviceResponse = queryBranchService.downloadFile();
            Response.Body body = serviceResponse.body();
            inputStream = body.asInputStream();
            BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream);
            response.setHeader("Content-Disposition", serviceResponse.headers().get("Content-Disposition").toString().replace("[", "").replace("]", ""));
            BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(response.getOutputStream());
            int length = 0;
            byte[] temp = new byte[1024 * 10];
            while ((length = bufferedInputStream.read(temp)) != -1) {
                bufferedOutputStream.write(temp, 0, length);
            }
            bufferedOutputStream.flush();
            bufferedOutputStream.close();
            bufferedInputStream.close();
            inputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        } catch (IOException e) {
            e.printStackTrace();
        }

}

到了這里,關(guān)于SpringBoot微服務(wù)項(xiàng)目,轉(zhuǎn)發(fā)并響應(yīng)下載請(qǐng)求的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Nuxt項(xiàng)目asyncData服務(wù)端請(qǐng)求數(shù)據(jù)渲染

    Nuxt項(xiàng)目asyncData服務(wù)端請(qǐng)求數(shù)據(jù)渲染

    或許有些人會(huì)比較喜歡在mounted里去請(qǐng)求數(shù)據(jù) 但在Nuxt項(xiàng)目中是絕對(duì)不能這樣操作的 因?yàn)?mounted的特性也說的比較明白了 當(dāng)頁面掛載完之后執(zhí)行 但顯然 seo只讀你頁面掛載的內(nèi)容 如果你在這請(qǐng)求 那么對(duì)不起 你請(qǐng)求回來的數(shù)據(jù)渲染到界面上seo爬蟲是看不到的 Nuxt項(xiàng)目請(qǐng)求數(shù)據(jù) 可

    2023年04月08日
    瀏覽(13)
  • vue項(xiàng)目多個(gè)不同的服務(wù)器請(qǐng)求地址管理

    vue項(xiàng)目多個(gè)不同的服務(wù)器請(qǐng)求地址管理

    在vue項(xiàng)目開發(fā)過程中,獲取不同的數(shù)據(jù)可能會(huì)出現(xiàn)需要請(qǐng)求多個(gè)不同服務(wù)器地址的域名,這個(gè)時(shí)候需要對(duì)不同域名的請(qǐng)求地址進(jìn)行管理以及跨域的代理。 跨域配置: 在vue項(xiàng)目的vue.config.js文件中對(duì)devServer.proxy進(jìn)行配置,如下: axios請(qǐng)求封裝: 封裝axios請(qǐng)求的js文件中配置如下

    2024年02月04日
    瀏覽(21)
  • Vue項(xiàng)目打包到服務(wù)器后請(qǐng)求接口報(bào)錯(cuò)404

    Vue項(xiàng)目打包到服務(wù)器后請(qǐng)求接口報(bào)錯(cuò)404

    背景 :前端Vue項(xiàng)目打包后部署在服務(wù)器上,而后端接口在另外一臺(tái)服務(wù)器。本地生產(chǎn)環(huán)境運(yùn)行時(shí)因?yàn)樵赩ue中配置了proxy代理,所以項(xiàng)目運(yùn)行正常。但是在服務(wù)器開發(fā)環(huán)境中,一直報(bào)錯(cuò)404。 原因 :在開發(fā)環(huán)境中設(shè)置了proxy代理后,打包時(shí)proxy代理就會(huì)失效,因?yàn)閜roxy代理并不會(huì)

    2024年02月09日
    瀏覽(39)
  • SpringBoot項(xiàng)目添加WebService服務(wù)

    1.簡單描述 WebService簡單理解就是用http發(fā)送接收xml數(shù)據(jù),但這個(gè)xml得遵守系統(tǒng)的規(guī)范。這個(gè)規(guī)范就是WSDL(Web服務(wù)描述語言,Web Services Description Language)。 在WebService中傳輸?shù)膞ml有一個(gè)正式的名稱叫Soap(簡單對(duì)象訪問協(xié)議 Simple Object Access Protocol)。 WebService分為客戶端和服務(wù)端

    2024年02月16日
    瀏覽(16)
  • SpringBoot項(xiàng)目集成ElasticSearch服務(wù)

    SpringBoot項(xiàng)目集成ElasticSearch服務(wù)

    本文已收錄于專欄 《中間件合集》 ??Spring boot的版本是: 2.3.12 ??ElasticSearch的版本是:7.6.2 ??在我們的項(xiàng)目中經(jīng)常會(huì)遇到對(duì)于字符串的一些操作,例如對(duì)于字符串的分詞,通過一個(gè)詞去查找對(duì)應(yīng)的原文(全文搜索)。那可能有人就會(huì)問了,使用mysql的模糊查詢也可以根據(jù)

    2024年02月12日
    瀏覽(44)
  • 使用docker部署springboot微服務(wù)項(xiàng)目

    使用docker部署springboot微服務(wù)項(xiàng)目

    檢查docker是否已安裝 在/opt/目錄下創(chuàng)建docker目錄: 將在Idea中通過Maven打包好的可執(zhí)行項(xiàng)目的jar包上傳到服務(wù)器的/opt/docker目錄下 項(xiàng)目中的yml配置文件中的服務(wù)端口為8096: 用于描述構(gòu)建項(xiàng)目鏡像的這個(gè)文件名必須是Dockerfile,無后綴,文件名不能隨意起。否則構(gòu)建時(shí)提示找不到

    2024年02月14日
    瀏覽(20)
  • SpringBoot項(xiàng)目部署到服務(wù)器

    SpringBoot項(xiàng)目部署到服務(wù)器

    此次用到了三個(gè)軟件:IDEA、WinSCP、FinalShell 服務(wù)器的性能相比較本地有著更大的內(nèi)存空間,運(yùn)行程序代碼會(huì)更加的快捷方便,而且服務(wù)器開啟后,程序放在那邊讓它跑就好了。 一般的web項(xiàng)目想要放到服務(wù)器上運(yùn)行的話,需要首先在服務(wù)器上裝一個(gè)Tomcat,然后將項(xiàng)目打包成wa

    2024年02月04日
    瀏覽(24)
  • SpringBoot項(xiàng)目上傳至服務(wù)器

    SpringBoot項(xiàng)目上傳至服務(wù)器

    通過包管理器安裝 參考鏈接: 1. 安裝之后沒有密碼,所以需要設(shè)置密碼,使用下面的語句 2.在數(shù)據(jù)庫中建表(和本地方法一樣) ?1.在pop.xml進(jìn)行配置 2.yml配置文件 3.打包( 設(shè)置打包名稱) xShell直接拖過去就好 使用以下命令啟動(dòng)項(xiàng)目: ? 跟蹤日志命令 ?

    2024年02月13日
    瀏覽(22)
  • springboot 微服務(wù)項(xiàng)目如何集成 html 頁面

    Spring Boot 微服務(wù)項(xiàng)目通常是通過 REST API 來提供服務(wù)的,而不是直接集成 HTML 頁面。 如果在 Spring Boot 項(xiàng)目中集成 HTML 頁面,簡單整理了一下,可以采用以下常用的方法: ** Thymeleaf :**Thymeleaf 是一款用于在 web 和獨(dú)立環(huán)境中創(chuàng)建可擴(kuò)展的 XML/HTML/文本模板的 Java 模板引擎。它可

    2024年02月11日
    瀏覽(15)
  • 在服務(wù)器上啟動(dòng)springboot項(xiàng)目

    在服務(wù)器上啟動(dòng)springboot項(xiàng)目

    環(huán)境搭建:要在服務(wù)器上運(yùn)行SpringBoot Web項(xiàng)目,需要先在服務(wù)器上安裝JDK(CentOS系統(tǒng)安裝JDK參考:http://t.csdn.cn/0zYml) 創(chuàng)建一個(gè)簡單的springboot項(xiàng)目,并通過測試; 執(zhí)行maven的package命令,然后在target文件夾中找到j(luò)ar包; 將生成的jar包放到服務(wù)器上,如果有用遠(yuǎn)程連接工具windt

    2024年02月16日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包