코드지우개

RestTemplate.execute()를 사용하여 File타입으로 리턴 받기 본문

java

RestTemplate.execute()를 사용하여 File타입으로 리턴 받기

코드지우개 2023. 9. 5. 10:57
반응형

이번에는 RestTemplate을 사용해서 url로 API를 호출해서 File을 다운로드 받고 File 타입으로 리턴 받는법을 적어보려고 한다.

RestTemplate란?

Spring에서 지원하는 객체로 간편하게 Rest 방식 API를 호출할 수 있는 Spring 내장 클래스이다.

import org.springframework.web.client.RestTemplate;
import org.apache.commons.io.FilenameUtils;
import org.springframework.http.HttpMethod;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.nio.file.Files;


public class Test{
    public void test(){

        RestTemplate rest = new RestTemplate(); 
        String downloadUrl = "https://testfile.jsp";
		//확장자
		String extension = "." +FilenameUtils.getExtension(downloadUrl);

        File downloadFile = rest.execute( downloadUrl, HttpMethod.GET, clientHttpResponse->{
            //file 다운로드
            File outputFile = File.createTempFile("download", extension);
            //file 다운로드 경로 : C:\Users\사용자\AppData\Local\Temp

		    try (InputStream in = clientHttpResponse.getBody();
		        FileOutputStream fos = new FileOutputStream(outputFile)) {
	
                byte[] buffer = new byte[1024];
	            int len;
	
	            while ( (len = in.read(buffer)) > 0 ) {
	              	fos.write(buffer, 0, len);
		        }
		        fos.close();
		    } catch (IOException e) {
		        throw new RuntimeException("Failed to download error >>> ", e);
		    }
		    return outputFile;
        })
    }
}


 

위에 코드를 보면 RestTemplate.execute()를 사용해서 api를 호출할 url과 Http Method(Get, Post)를 작성을 하여 호출하고createTempFile()를 사용하면 지정된 경로에 file이 다운로드 된다.
그 후 다운로드한 file을 읽어서 FileOutputStream을 통해 file 타입으로 리턴을 할 수 있다.

 

 

반응형

'java' 카테고리의 다른 글

입력 스트림과 출력 스트림 ①  (0) 2023.09.05
File을 MultipartFile 타입으로 변환  (0) 2023.09.05
람다식 ⑤  (0) 2023.09.05
람다식 ④  (0) 2023.06.05
람다식 ③  (0) 2023.06.05
Comments