본문 바로가기
MySql

MySQL 이미지를 데이터베이스에 직접 저장하거나 base64 데이터로 저장합니까?

by 베이스 공부 2020. 9. 17.
반응형

데이터베이스에 이미지를 저장하는 일반적인 방법은 데이터를 저장하기 전에 이미지를 base64 데이터로 변환하는 것입니다. 이 프로세스는 크기를 33 % 증가시킵니다. 또는 이미지를 BLOB 로 직접 저장할 수 있습니다. 예를 들면 :

$image = new Imagick("image.jpg");
$data = $image->getImageBlob();
$data = $mysqli->real_escape_string($data);
$mysqli->query("INSERT INTO images (data) VALUES ('$data')");

그런 다음 이미지를

<img src="data:image/jpeg;base64,' .  base64_encode($data)  . '" />

후자의 방법을 사용하면 저장 공간의 1/3을 절약 할 수 있습니다. MySQL 데이터베이스에서 이미지를 base64 로 저장하는 것이 더 일반적인 이유는 무엇입니까?

업데이트 : 데이터베이스에 이미지를 저장하는 것의 장단점에 대해 많은 논쟁이 있으며 대부분의 사람들은 이것이 실용적인 접근 방식이 아니라고 생각합니다. 어쨌든, 여기서는 이미지를 데이터베이스에 저장한다고 가정하고이를 수행하는 가장 좋은 방법에 대해 논의합니다.

 

해결 방법

 

Pro base64 : 처리하는 인코딩 된 표현은 매우 안전한 문자열입니다. 제어 문자도 따옴표도 포함되지 않습니다. 후자는 SQL 주입 시도를 방지하는 데 도움이됩니다. "손으로 코딩 된"SQL 쿼리 문자열에 값을 추가하는 데 아무런 문제가 없을 것으로 예상합니다.

Pro BLOB : 데이터베이스 관리자 소프트웨어는 예상되는 데이터 유형을 알고 있습니다. 이를 위해 최적화 할 수 있습니다. TEXT 필드에 base64를 저장하면 인덱스 또는 기타 데이터 구조를 구축하려고 할 수 있습니다. 이것은 "실제"텍스트 데이터에 정말 유용하고 유용하지만 이미지 데이터를위한 시간과 공간을 낭비하게됩니다. 그리고 바이트 수와 같이 더 작습니다.

 

참조 페이지 https://stackoverflow.com/questions/9722603

 

 

반응형

댓글