1. 程式人生 > 其它 >springboot 如何使用restTemplate下載檔案流到本地

springboot 如何使用restTemplate下載檔案流到本地

技術標籤:javapythonlinuxjvmhadoop

在我們進行檔案的上傳下載需求時,我們需要注意檔案的大小,較小的檔案可以將檔案載入到記憶體中,然後進行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請求。