PHP를 사용하여 MySQL 데이터베이스에서 이미지를 저장하고 검색하려면 어떻게해야합니까?
PHPPHP를 사용하여 MySQL 데이터베이스에서 이미지를 저장하고 검색하려면 어떻게해야합니까?
MySQL에 이미지를 삽입 한 다음 PHP를 사용하여 이미지를 검색하려면 어떻게해야합니까?
나는 양쪽 영역에서 경험이 제한되어 있으며, 이것을 이해하기 위해 약간의 코드를 사용할 수 있습니다.
해결법
-
==============================
1.먼저 이미지를 저장하는 MySQL 테이블을 생성합니다 (예 :
먼저 이미지를 저장하는 MySQL 테이블을 생성합니다 (예 :
create table testblob ( image_id tinyint(3) not null default '0', image_type varchar(25) not null default '', image blob not null, image_size varchar(25) not null default '', image_ctgy varchar(25) not null default '', image_name varchar(50) not null default '' );
그런 다음 이미지를 다음과 같이 데이터베이스에 작성할 수 있습니다.
/*** * All of the below MySQL_ commands can be easily * translated to MySQLi_ with the additions as commented ***/ $imgData = file_get_contents($filename); $size = getimagesize($filename); mysql_connect("localhost", "$username", "$password"); mysql_select_db ("$dbname"); // mysqli // $link = mysqli_connect("localhost", $username, $password,$dbname); $sql = sprintf("INSERT INTO testblob (image_type, image, image_size, image_name) VALUES ('%s', '%s', '%d', '%s')", /*** * For all mysqli_ functions below, the syntax is: * mysqli_whartever($link, $functionContents); ***/ mysql_real_escape_string($size['mime']), mysql_real_escape_string($imgData), $size[3], mysql_real_escape_string($_FILES['userfile']['name']) ); mysql_query($sql);
웹 페이지의 데이터베이스 이미지를 다음과 같이 표시 할 수 있습니다.
$link = mysql_connect("localhost", "username", "password"); mysql_select_db("testblob"); $sql = "SELECT image FROM testblob WHERE image_id=0"; $result = mysql_query("$sql"); header("Content-type: image/jpeg"); echo mysql_result($result, 0); mysql_close($link);
-
==============================
2.데이터베이스에 이미지를 저장하는 대신 디스크의 폴더에 이미지를 저장하고 데이터베이스에 위치를 저장하십시오.
데이터베이스에 이미지를 저장하는 대신 디스크의 폴더에 이미지를 저장하고 데이터베이스에 위치를 저장하십시오.
-
==============================
3.DB에서 이미지를 제공하는 것은 대개 디스크에서 제공하는 것보다 훨씬 더 느립니다.
DB에서 이미지를 제공하는 것은 대개 디스크에서 제공하는 것보다 훨씬 더 느립니다.
PHP 프로세스를 시작하고 DB 연결을 열고 데이터베이스가 동일한 디스크의 이미지 데이터를 읽고 파일 시스템처럼 캐시 용 RAM을 가져 와서 몇 개의 소켓과 버퍼를 통해 전송 한 다음 PHP를 통해 푸시 아웃합니다. 그것은 캐싱 할 수없고 청크 분할 된 HTTP 인코딩의 오버 헤드를 추가합니다.
OTOH의 최신 웹 서버는 메모리 최적화 된 커널 호출 (메모리 매핑 파일과 메모리 영역이 TCP 스택으로 전달됨)만으로 이미지를 제공 할 수 있으므로 메모리를 복사하지 않고 거의 오버 헤드가 없습니다.
이는 한 대의 컴퓨터에서 20 개 또는 2000 개의 이미지를 동시에 처리 할 수 있다는 것의 차이입니다.
따라서 트랜잭션 무결성을 절대적으로 필요로하지 않는 한 (실제로 DB 및 파일 시스템 정리 루틴의 이미지 메타 데이터만으로 수행 할 수있는 경우가 아니면) PHP의 이미지 처리에 대한 PHP 처리 방법을 개선해야합니다.
-
==============================
4.나는 또한 이것을 생각하고 DB가 아닌 파일 시스템에 이미지를 저장하도록 선택하는 것이 좋습니다. 여기를 참조하십시오 : DB에 이미지 저장하기 - 네이 또는 아닐까요?
나는 또한 이것을 생각하고 DB가 아닌 파일 시스템에 이미지를 저장하도록 선택하는 것이 좋습니다. 여기를 참조하십시오 : DB에 이미지 저장하기 - 네이 또는 아닐까요?
-
==============================
5.내 생각에, 이미지를 데이터베이스에 직접 저장하는 대신 데이터베이스에 이미지 위치를 저장하는 것이 좋습니다. 두 옵션을 비교할 때 데이터베이스에 이미지를 저장하는 것은 보안상의 이유로 안전합니다. 단점은
내 생각에, 이미지를 데이터베이스에 직접 저장하는 대신 데이터베이스에 이미지 위치를 저장하는 것이 좋습니다. 두 옵션을 비교할 때 데이터베이스에 이미지를 저장하는 것은 보안상의 이유로 안전합니다. 단점은
반면에, 이미지 파일 위치를 db에 저장하는 것은 다음과 같은 이점을 갖습니다.
-
==============================
6.개인적으로 나는 데이터베이스에 이미지를 저장하지 않고 대신 외부에서 액세스 할 수없는 폴더에 저장하고 위치를 추적하기 위해 데이터베이스를 사용합니다. 데이터베이스 크기를 줄이고 PHP를 사용하여 데이터베이스 크기를 포함시킬 수 있습니다. PHP가 해당 이미지에 액세스 할 수있는 방법이 없을 것입니다.
개인적으로 나는 데이터베이스에 이미지를 저장하지 않고 대신 외부에서 액세스 할 수없는 폴더에 저장하고 위치를 추적하기 위해 데이터베이스를 사용합니다. 데이터베이스 크기를 줄이고 PHP를 사용하여 데이터베이스 크기를 포함시킬 수 있습니다. PHP가 해당 이미지에 액세스 할 수있는 방법이 없을 것입니다.
from https://stackoverflow.com/questions/1636877/how-can-i-store-and-retrieve-images-from-a-mysql-database-using-php by cc-by-sa and MIT license
'PHP' 카테고리의 다른 글
세션 변수가 작동하지 않는 PHP (0) | 2018.09.07 |
---|---|
cURL을 사용하여 리디렉션되는 위치를 찾으려면 어떻게합니까? (0) | 2018.09.07 |
다른 프로그래밍 언어로 쉽게 변환 할 수 있도록 코드에서 어떤 유형의 패턴을 적용 할 수 있습니까? [닫은] (0) | 2018.09.07 |
PHP로 전자 메일의 유효성을 검사하는 방법은 무엇입니까? (0) | 2018.09.07 |
$ _REQUEST []를 사용하는 것이 잘못된 이유는 무엇입니까? (0) | 2018.09.07 |