자바 Base 64 디 코딩 오류 및 해결 방법
자신 은 작은 사 이 트 를 만들어 연습 을 하고 있 지만 전단 사진 은 base 64 암호 화 를 거 쳐 뒤로 넘 겨 디 코딩 을 하고 있 습 니 다.하지만 항상 문제 가 있 습 니 다.신의 가르침 을 바 랍 니 다.
public static String base64ToImg(String src) throws IOException {
String uuid = UUID.randomUUID().toString();
StringBuilder newPath = new StringBuilder(IMG_ROOT_PATH);
newPath.append(separator).
append(uuid).
append(IMG_SUFFIX);
if(src == null){
return null;
}
byte[] data = null;
Base64.Decoder decoder = Base64.getDecoder();
try (OutputStream out = new FileOutputStream(newPath.toString())) {
data = decoder.decode(src);
out.write(data);
return newPath.toString();
} catch (IOException e) {
throw new IOException();
}
}
java.lang.IllegalArgumentException: Input byte array has wrong 4-byte ending unit
이상 은 관련 이상 정보 입 니 다.나 는 전단 의 base 64 코드 를 메모 장 에 붙 여 넣 고 스스로 디 코딩 을 시도 하 는 것 도 같은 문제 이다.해결 방법:
IllegalArgument 예외:불법 매개 변수 이상,
이것 괜찮아요?
과정 을 말씀 드 리 겠 습 니 다.
stackoverflow,debug 를 갔습니다.마지막 으로 data 가 null 인 것 을 발 견 했 습 니 다.힘 내세 요.저희 가 배 워 야 할 것 이 많 습 니 다.
다음 에 문제 가 생기 면 debug 에서 어떤 코드 에 문제 가 생 겼 는 지 보고 대답 을 통 해 저도 많이 배 웠 습 니 다.
관건 은 여기에 있다.throw new IOException();
try (OutputStream out = new FileOutputStream(newPath.toString())) {
out.write(data);
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException(" ");
//throw new RuntimeException(e);
}
public static String base64ToImg(String src) throws IOException {
String uuid = UUID.randomUUID().toString();
StringBuilder newPath = new StringBuilder("xx");
newPath.append("xx").
append(uuid).
append("xx");
if (src == null) {
return null;
}
byte[] data = Base64.getDecoder().decode(src);
try (OutputStream out = new FileOutputStream(newPath.toString())) {
out.write(data);
} catch (IOException e) {
e.printStackTrace();
}
return newPath.toString();
}
자주 사용 하 는 닫 기 자원 추가:
public static String base64ToImg(String src) throws IOException {
String uuid = UUID.randomUUID().toString();
StringBuilder newPath = new StringBuilder("xx");
newPath.append("xx").
append(uuid).
append("xx");
if (src == null) {
return null;
}
byte[] data = null;
OutputStream out = null;
Base64.Decoder decoder = Base64.getDecoder();
try {
out = new FileOutputStream(newPath.toString());
data = decoder.decode(src);
out.write(data);
} catch (IOException e) {
e.printStackTrace();
} finally {
if (out != null) {
out.close();
}
}
return newPath.toString();
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.