programing

MySQL에 이미지를 저장할 수 있습니까?

sourcetip 2022. 10. 29. 16:26
반응형

MySQL에 이미지를 저장할 수 있습니까?

중복 가능성:
MySQL 이미지
MySQL에 이미지 저장

등록의 일환으로서 유저가 자신의 이미지를 업 로드하는 Web 사이트를 개발하려고 합니다.각 이미지마다 PHP로 썸을 만들어 주었으면 합니다(그렇게 어렵지 않습니다).데이터베이스에 엄지손가락을 저장하고 MySQL을 사용합니다(드라이브에 엄지손가락을 물리적 파일로 저장하지 않음).
MySQL에서는 이미지 데이터의 저장 및 취득이 가능합니까?또, 어떻게 하면 좋을까요?이미지 데이터를 지원하지 않는 경우 지원하는 무료 데이터베이스가 있습니까?이치노
감사해요.

예, 데이터베이스에 이미지를 저장할 수 있지만, 제 생각에는 권장하지 않으며 일반적인 관행도 아닙니다.

일반적인 방법은 이미지를 파일 시스템의 디렉토리에 저장하고 이미지에 대한 참조(예: 이미지 경로, 이미지 이름 등)를 데이터베이스에 저장하는 것입니다.또, 컨텐츠 전송 네트워크(CDN)나, 물리 영역의 넓은 영역에 있는 다수의 호스트에 이미지를 보존해, 데이타베이스내의 이러한 자원에 액세스 하기 위한 참조를 보존할 수도 있습니다.

이미지는 1MB보다 클 수 있습니다.따라서 데이터베이스에 이미지를 저장하면 데이터베이스와 웹 서버 사이의 네트워크에 불필요한 부하가 걸릴 수 있습니다.

저는 40만 명 이상의 직원을 둔 스타트업, 중견기업, 대기업에서 근무한 적이 있습니다.13년 동안 전문직을 수행하면서, 저는 데이터베이스에 이미지를 저장하는 사람을 본 적이 없습니다.나는 그 진술을 뒷받침하기 위해 이것을 말한다. 그것은 드문 관행이다.

blob으로 저장해야 합니다.mysql의 LONGBLOB 데이터형이 작동합니다.

예:

CREATE TABLE 'test'.'pic' (
    'idpic' INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
    'caption' VARCHAR(45) NOT NULL,
    'img' LONGBLOB NOT NULL,
  PRIMARY KEY ('idpic')
)

다른 사람들이 말했듯이, 그것은 나쁜 관행이지만 할 수 있다.하지만 이 코드가 잘 확장될지는 잘 모르겠습니다.

MySQL에 영상을 블럽으로 저장할 수 있습니다.단, 이것은 몇 가지 이유로 문제가 됩니다.

  • 이미지 조작이 어려워질 수 있습니다.일괄 조작을 실행하기 전에 먼저 데이터베이스에서 이미지를 취득해야 합니다.
  • 데이터베이스 전체가 RAM에 저장되는 매우 드문 경우를 제외하고 MySQL 데이터베이스는 최종적으로 디스크에 저장됩니다.즉, DB 이미지가 블럽으로 변환되어 데이터베이스에 삽입된 후 디스크에 저장되므로 디스크에 저장하기만 하면 많은 오버헤드를 줄일 수 있습니다.

대신 테이블을 업데이트하여 image_path 필드를 추가하는 것이 좋습니다.예를 들어 다음과 같습니다.

ALTER TABLE `your_table`
ADD COLUMN `image_path` varchar(1024)

그런 다음 이미지를 디스크에 저장하고 테이블을 이미지 경로로 업데이트합니다.이미지를 사용해야 하는 경우 지정된 경로를 사용하여 디스크에서 이미지를 검색합니다.

이 방법의 장점은 이미지를 디스크에 저장할 필요가 없다는 것입니다.이미지 경로 대신 URL을 쉽게 저장하고 인터넷에 연결된 모든 위치에서 이미지를 가져올 수 있습니다.

영상을 데이터베이스에 BLOB로 저장해야 합니다.

테이블에 PHOTO라는 컬럼을 만들어 중간 블랍으로 설정해 주세요.

그런 다음 다음과 같은 형식으로 가져오기를 원할 것입니다.

$data = file_get_contents($_FILES['photo']['tmp_name']);

컬럼을 $data 값으로 설정합니다.

물론 이는 잘못된 관행이므로 사용자 계정에 해당하는 이름으로 시스템에 파일을 저장할 수 있습니다.

언급URL : https://stackoverflow.com/questions/6472233/can-i-store-images-in-mysql

반응형