db에서 받아온 blob데이터를 base64로 인코딩 하였는데 이미지가 보이지 않았다.
다른 사이트의 base64 이미지 뷰어에 base64를 넣었는데
사이트는:
https://ko.rakko.tools/tools/71/
를 사용하였다.
Base64- 이미지 디코더 / 컨버터 | RAKKOTOOLS🔧
Base64 문자열을 이미지로 디코딩
ko.rakko.tools

위와 같이
"데이터 수집에 실패했습니다. 입력 내용에 오류가 없는지 확인하십시오."
라고 떴다.
여러 스택오버플로우를 돌아다니다가 겨우
해결하였다.
NodeJS 버전은 18버전을 사용하였다.
기존에는
rows = rows.map(row => {
if (row.IMG_DATA) {
// Buffer에 데이터를 바이너리로 로드하고 base64로 인코딩
row.IMG_DATA = Buffer.from(row.IMG_DATA).toString('base64');
}
다음과 같이 db에서 받아온 이미지 데이터를 base64로 인코딩 하였는데
이미지가 안나왔다.
그래서 해결한 코드는
rows = rows.map(row => {
if (row.IMG_DATA) {
// Buffer에 데이터를 바이너리로 로드하고 base64로 인코딩
row.IMG_DATA = Buffer.from(row.IMG_DATA, 'base64').toString();
}
이다.
수정 전 base64 결과

toString('base64')를 하면 이렇게 이쁘게 네모나게 나오지만
이미지가 보이지 않는다.

수정 후 base64 결과

위와같이 출력되는데 이미지가 정상적으로 출력된다.
다만 보이는 바와 같이 밑줄이 되어있는데 더블클릭으로 복사 하기가 불편해진다.
반응형
'Node.js' 카테고리의 다른 글
| 디스코드 봇 만들기 - 사용자가 음성 채널에 들어갔을때 (0) | 2024.11.14 |
|---|---|
| Node js cookie 설정시 option sameSite is invalid 오류 (0) | 2023.10.24 |
| Node js Connection Pool (4) | 2023.10.18 |
| Promise { <pending> } 이 뜬다. (0) | 2023.10.10 |
| JWT(json web token)으로 로그인시 토큰 발행 해주기(access, refresh) (0) | 2023.09.24 |