바이너리 데이터 전송

최인효·2024년 3월 28일
0

java

목록 보기
2/4
post-thumbnail

파일을 바이너리 데이터로 변경 및 전송

서버에 있는 파일을 외부 api에 전달하기 위해..
서버에 파일을 불러와 바이너리로 변경, 인코딩 후 파라미터에 담아 전송.

import java.io.File;
import java.nio.file.Files;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.Base64;

...

public String encodeFile(String fileUrl, String fileName) throws IOException {
	File file = new File(fileUrl);
    byte[] bytes = Files.readAllBytes(file.toPath());
    String baseEncodeStr = Base64.getEncoder().encodeToString(bytes);
    String urlEncodeStr = URLEncoder.encode(baseEncodeStr, StandardCharsets.UTF_8.toString());
    String result = urlEncodeStr.replace("+", "%20");
    /* 
     * bytes: 파일객체 byte[] 생성
     * baseEncodeStr : Base64 인코딩
     * urlEncodeStr: URLEncoder 인코딩
     * result: 외부 api에 전송시 "+"가 공백으로 치환돼 디코딩시 오류 발생.
     *         "%20"문자로 치환해줘야 수신측에서 정상적으로 받을 수 있음.
    */
    return result; 

}

수신측에서는 URLDecoder 디코딩 > Base64 디코딩 후 사용해야합니다.

0개의 댓글