2011-02-24 3 views
5

MYSQL 데이터베이스에 이미지 파일 (.jpg, .gif 등)을 저장할 수 있습니까? 아니면 그냥 시스템에 저장하고 이미지의 참조 경로를 취합니까?데이터베이스에있는 이미지

저는 ASP.NET C#을 사용하고 있으므로 샘플 코드가 있다면 공유 할 수 있으면 좋을 것입니다.

+3

예, 바이너리 데이터를 데이터베이스에 저장할 수 있습니다. 그러한 데이터가 존재하는지 아닌지에 관한 거룩한 전쟁입니다. –

답변

6

예, 이미지 파일 (및 기타 파일)을 데이터베이스에 바이너리 데이터로 저장할 수 있습니다.

MySQL에서는 BLOB data type을 사용하여이를 수행 할 수 있습니다.

BLOB는 다양한 양의 데이터를 저장할 수있는 2 진 대형 개체입니다. 네 개의 BLOB 유형은 TINYBLOB, BLOB, MEDIUMBLOB 및 LONGBLOB입니다. 이들은 보유 할 수있는 값의 최대 길이 만 다릅니다. [...]

BLOB 값은 2 진 문자열 (바이트 문자열)로 처리됩니다. 문자 집합이 없으며 정렬 및 비교는 열 값의 바이트 숫자 값을 기반으로합니다.

+0

이미지에서 바이트를 가져 오려면 다음을 사용하십시오. byte [] b = File.ReadAllBytes (file); –

+0

blob로 저장, http://dev.mysql.com/doc/refman/5.0/en/blob.html. 이미지를 파일 시스템에 저장하고 파일 페이지를 DB에 저장할 수도 있습니다. – gnome

1

이미지에서 바이트 배열을 만들어 데이터베이스에 저장해야합니다.

public static byte[] ConvertImageToByteArray(Image imageIn) 
{ 
    var ms = new MemoryStream(); 
    imageIn.Save(ms, ImageFormat.Png); 
    return ms.ToArray(); 
} 

는 이미지 데이터를 다시 변환하려면

public static Image ConvertByteArrayToImage(byte[] byteArrayIn) 
{ 
    var ms = new MemoryStream(byteArrayIn); 
    Image returnImage = Image.FromStream(ms); 
    return returnImage; 
} 
1

4GuysFromRolla.com 나는 데이터베이스에 직접 바이너리 데이터를 저장하는 코드를 작성할 때 내가 참조로 사용되는이에 대한 기사가 있습니다 : http://www.4guysfromrolla.com/articles/120606-1.aspx

필자는 개인적으로 이미지를 파일 시스템에 저장하고 데이터베이스의 포인터를 저장하는 것이 훨씬 덜 어렵다는 것을 알았습니다.

여기에 꽤 유사한 게시물의
+0

질문의 MySQL 부분을 보지 못했습니다. 이 기사가 실제로 얼마나 유용한 지 모르겠습니다. – Dave

4

먼저이 하나 Should I store my images in the database or folders?

두 번째 데이터베이스에 이미지를 저장하기위한 샘플 : 제 생각에는 http://www.dotnetcurry.com/ShowArticle.aspx?ID=129&AspxAutoDetectCookieSupport=1

당신이 이미지를 저장하도록 선택할 여부 따라 달라집니다 데이터베이스 또는 폴더. 두 가지 방법 모두 장단점이 있습니다. 여기

asp.net 포럼에서 짧은 코멘트 :

당신은 정말 데이터베이스에 이미지를 저장해야 하는가?

약 10 년 전, 나는 최초의 인터넷 프로젝트 - 이미지 데이터 뱅크 중 하나를 시작했다. 우리는 다양한 크기와 해상도 이미지를 이미지의 등록 사용자에게 제공해야합니다. 각 이미지는 이미지 모음으로 설계되었으며, 에서 미리보기 이미지에서 가장 높은 숫자로 해상도까지입니다. 사용 가능한 가장 큰 이미지 은 약 4MB였습니다. 아카이브에 저장된 각 이미지 은 총 크기가 인 6MB의 공간을 차지합니다.

백 엔드 데이터베이스는 Microsoft 플랫폼에서 을 실행하지 않지만 BLOB 필드는 을 지원합니다.많이 토론을하지 않고, 우리는 설명 및 기타 카탈로그 정보를 데이터베이스에 저장하고 정보를 아래의 개별 파일로 저장하기로 결정했습니다. 우리는 또한 데이터베이스에 에 대한 충분한 정보를 저장하여 파일을 검색합니다. 가 등록 된 사용자의 상대적으로 작은 번호를 설계되고는 응용 프로그램은 확장 성 문제가 없었다없이 한 번에 에 팀을 사람을했다, 또는 사용자에 대한 성능을 불평 않았다.

소프트웨어 및 데이터베이스의 상대적으로 오래된 세부터이 짧은 경험, 특히 경험은 기술-수 데이터베이스 스토리지를 통해 파일 기반 스토리지 의 우수성의 예제로 사용 할 수 있나요? 물론, 아니, 하지만 현대 DBMS 시스템은 BLOB 필드를 구현하는 방법 사이의 라인을 읽고, 나는이 경험을 이미지 스토리지에 대한 아이디어를 공식화 및 데이터베이스에 사용했습니다.

요약하면 이미지를 데이터베이스에 저장하는 것이 좋습니다. 이미지를 자주 편집해야한다면 이미지를 서버의 하드 드라이브에 별도의 파일 으로 저장하는 것이 좋습니다. 이미지의 크기가 매우 큰 경우 ( 예, 수백 메가 바이트), I 은 이미지를 파일 시스템에 별도의 파일로 저장하는 것이 좋습니다. 이미지가 기본적으로 읽기 전용이며 은 비교적 정적이며 크기를 킬로바이트로 측정하면 데이터베이스를 데이터베이스에 저장하는 것이 좋습니다.

+0

그래서 두 가지 방법으로 만들 수 있다고 말하면됩니다. 감사합니다 ... – lock

0

저희 회사는 현재 문서와 이미지 용 BLOB 데이터가있는 데이터베이스를 사용하고 있으며 서버의 파일에 대한 참조 만 저장하도록하고 있습니다. 데이터베이스는 20MB가되어야하는 많은 GBs입니다. 나는 그것이 확실히 DB를 느리게하기 때문에 BLOB에 대해 권할 것이다.

+0

위대한 ...! 그러나 실제로 데이터베이스가 직접 이미지를 저장할 수 있는지 또는 참조를 저장하는지 의심 스럽습니다 ... 의심의 여지가 없어졌습니다. 답변 주셔서 감사합니다. – lock

관련 문제