데이터베이스에 이미지를 저장하는 일반적인 방법은 데이터를 저장하기 전에 이미지를 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
'MySql' 카테고리의 다른 글
MySQLi 준비된 문의 결과를 연관 배열에 어떻게 넣을 수 있습니까? (0) | 2020.09.18 |
---|---|
MySQL SQL : MySQL에서 기존 열을 기본 키로 설정 (0) | 2020.09.17 |
MySQL 존재하지 않는 경우 mysql 테이블에 열 추가 (0) | 2020.09.17 |
MySQL 원격 서버에서 Amazon EC2의 mysql에 연결 (0) | 2020.09.17 |
MySQL JOIN과 LEFT JOIN의 차이점 (0) | 2020.09.17 |
댓글