中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

WebClient中的文件上傳與下載是怎樣的

發布時間:2022-01-17 18:40:47 來源:億速云 閱讀:166 作者:柒染 欄目:大數據

這期內容當中小編將會給大家帶來有關WebClient中的文件上傳與下載是怎樣的,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

WebClient是從Spring 5開始提供的一個HTTP客戶端庫,為了使用WebClient進行文件上傳和下載,需要我們先編寫服務端的支持文件上傳和下載的程序。請參考我之前寫的一篇文章:SpringBoot實現本地存儲文件上傳及提供HTTP訪問服務。按照此文完成學習之后,可以獲得

  • 一個以訪問服務URI為"/upload”的文件上傳服務端點

  • 服務端點上傳文件成功后會返回一個HTTP連接,可以用來下載文件。

下面我們就開始學習使用WebClient是HTTP客戶端庫,進行文件的上傳與下載。

一、文件上傳

在本地8888端口搭建了一個文件上傳接收的服務端,服務端點為“/upload”。上傳本地磁盤中的一個文件"D:\data\local\splash.png"

@SpringBootTest
class UpDownLoadTests {

   //創建webClient
   private WebClient webClient = WebClient.builder()
               .baseUrl("http://localhost:8888/")
               .build();

   [@Test](https://my.oschina.net/azibug)
   void testUpload()  {
      // 待上傳的文件(存在客戶端本地磁盤)
      String filePath = "D:\\data\\local\\splash.png";
      // 封裝請求參數
      FileSystemResource resource = new FileSystemResource(new File(filePath));
      MultiValueMap<String, Object> param = new LinkedMultiValueMap<>();
      param.add("uploadFile", resource);  //服務端MultipartFile uploadFile
      //param.add("param1", "test");   //服務端如果接受額外參數,可以傳遞

      // 發送請求
      Mono<String> mono = webClient
                  .post() // POST 請求
                  .uri("/upload")  // 請求路徑
                  .contentType(MediaType.APPLICATION_FORM_URLENCODED)
                  .body(BodyInserters.fromMultipartData(param))
                  .retrieve() // 獲取響應體
                  .bodyToMono(String.class); //響應數據類型轉換

      // 輸出結果
      System.out.println(mono.block());
   }
}

輸出打印結果如下:

WebClient中的文件上傳與下載是怎樣的

文章上傳之后返回一個HTTP URL訪問地址,可以通過瀏覽器訪問,也可以通過程序下載。

二、文件下載

執行下列代碼之后,被下載文件url,會被正確的保存到本地磁盤目錄

[@Test](https://my.oschina.net/azibug)
void testDownLoad() throws IOException {
   Mono<ClientResponse> mono = webClient
               .get() // GET 請求
               .uri("/2020/08/22/0f0a353a-7033-4a13-832e-d043f6360514.png")  // 請求路徑
               .accept(MediaType.APPLICATION_OCTET_STREAM)
               .exchange(); // 獲取響應體

   ClientResponse response = mono.block();
   Resource resource = response.bodyToMono(Resource.class).block();

   assert resource != null;
   Files.copy(resource.getInputStream(),
            Paths.get("D:\\data\\local\\splash-down.png" ));

}

上述就是小編為大家分享的WebClient中的文件上傳與下載是怎樣的了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

柳河县| 昆山市| 苏州市| 德清县| 安福县| 阿拉善盟| 喀什市| 凯里市| 南岸区| 交城县| 连州市| 疏附县| 海门市| 全州县| 康马县| 塘沽区| 闻喜县| 长兴县| 株洲市| 名山县| 安顺市| 双峰县| 珠海市| 绩溪县| 根河市| 育儿| 德令哈市| 赤城县| 南郑县| 平武县| 蓬莱市| 门头沟区| 仁布县| 涡阳县| 娱乐| 宁津县| 辽宁省| 县级市| 金乡县| 巴彦淖尔市| 南昌县|