springboot 如何使用restTemplate下載檔案流到本地
阿新 • • 發佈:2021-01-21
在我們進行檔案的上傳下載需求時,我們需要注意檔案的大小,較小的檔案可以將檔案載入到記憶體中,然後進行IO操作。但是當我們上傳下載的檔案過大時,此方案就不可用了嗎,因為JVM虛擬機器資源有限。因此,上傳下載我們只能通過檔案流來實現。
此處我們來學習一下如何使用restTemplate實現較大檔案的上傳下載
RequestCallback requestCallback = request -> request.getHeaders() .setAccept(Arrays.asList(MediaType.APPLICATION_OCTET_STREAM, MediaType.ALL)); // 對響應進行流式處理而不是將其全部載入到記憶體中 restTemplate.execute(downloadUrl, HttpMethod.GET, requestCallback, clientHttpResponse -> { Files.copy(clientHttpResponse.getBody(), Paths.get(localTempFilePath)); return null; });
值得注意的是,此處downloadUrl下載請求方式應該為GET。並且不建議使用平常的Get請求。