您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關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()); } }
輸出打印結果如下:
文章上傳之后返回一個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中的文件上傳與下載是怎樣的了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。