소개 많은 경우 이미지를 데이터베이스에 저장해야 합니다. 일부 응용 프로그램에는 파일 시스템에 저장될 수 없는 민감한 정보가 있습니다. 파일 시스템에 저장된 이미지는 사용자가 쉽게 불법적으로 얻을 수 있기 때문입니다.
이 문서에서는 ASP.NET에서 SQL SERVER 데이터베이스에 이미지를 저장하는 방법에 대해 설명합니다.
이 기사에서는 다음과 같은 측면에 대해 알아봅니다.
l 이미지 파일 업로드 요구사항
l Strem 객체 사용
l 업로드된 이미지 크기 및 유형 가져오기
l InputStream 메소드를 사용하는 방법은 무엇입니까?
이미지 파일 업로드 요구 사항 업로드를 시작하기 전에 두 가지 중요한 작업을 수행해야 합니다.
#Form 태그의 enctype 속성은 다음 형식으로 설정되어야 합니다.
enctype="멀티파트/폼-데이터"
#사용자가 이미지 파일을 선택할 수 있는 HTML 컨트롤을 제공합니다.
<입력 유형=파일>
#Strem 개체를 처리하려면 System.IO 네임스페이스도 참조해야 합니다. 위의 세 항목은 aspx 페이지에 적용되어야 합니다. SQL SERVER에는 다음과 같은 요구 사항도 있습니다.
#이미지 필드 유형이 하나 이상 포함된 테이블
#또한 이미지 유형을 저장하는 데 사용되는 Varchar 유형 필드를 갖는 것이 더 좋습니다. 그런 다음 이미지 필드 유형과 <input type=file>(HTML 파일 제어)이 있는 데이터 테이블이 있습니다. 또한 사용자가 이미지를 선택한 후 클릭할 수 있는 제출 버튼이 필요합니다. 버튼의 OnClick 이벤트에서 이미지 파일의 내용을 가져와 마지막으로 데이터 테이블에 삽입해야 합니다. 이미지를 읽고 데이터 테이블에 삽입하는 버튼의 OnClick 이벤트를 살펴보겠습니다.
제출 버튼 OnClick 이벤트 코드
http://blog.downcodes.com/
intImageSize를 Int64로 희미하게 표시
희미한 strImageType을 문자열로
Dim ImageStream As Stream
' 이미지 크기를 가져옵니다.
intImageSize = PersonImage.PostedFile.ContentLength
' 이미지 유형을 가져옵니다.
strImageType = PersonImage.PostedFile.ContentType
' 이미지를 읽습니다.
ImageStream = PersonImage.PostedFile.InputStream
Dim ImageContent(intImageSize) 바이트 단위
Dim intStatus를 정수로 저장
intStatus = ImageStream.Read(ImageContent, 0, intImageSize)
' 연결 및 명령 개체의 인스턴스를 만듭니다.
myConnection을 새 SqlConnection(ConfigurationSettings.AppSettings("ConnectionString"))으로 흐리게 설정
Dim myCommand As New SqlCommand("sp_person_isp", myConnection)
' 명령을 SPROC로 표시
myCommand.CommandType = CommandType.StoredProcedure
' SPROC에 매개변수 추가
prmPersonImage를 새 SqlParameter("@PersonImage", SqlDbType.Image)로 희미하게 표시
prmPersonImage.Value = 이미지 콘텐츠
myCommand.Parameters.Add(prmPersonImage)
Dim prmPersonImageType을 새 SqlParameter("@PersonImageType", SqlDbType.VarChar, 255)로 지정
prmPersonImageType.Value = strImageType
myCommand.Parameters.Add
(prmPersonImageType)
myConnection.Open()
myCommand.ExecuteNonQuery()
myConnection.Close()
Response.Write("새 사람이 성공적으로 추가되었습니다!")
SQLexc를 SqlException으로 포착
Response.Write("삽입 실패. 오류 세부 정보: " & SQLexc.ToString())
시도 종료
어떻게 작동하나요?
PersonImage 개체는 HTMLInputFile 컨트롤입니다. 먼저 삽입된 이미지의 크기를 가져와야 하며 이는 다음 방법으로 달성됩니다.
intImageSize = PersonImage.PostedFile.ContentLength
다음으로 ContentType 속성을 통해 이미지 유형을 가져와야 합니다. 마지막이자 가장 중요한 것은 다음 방법을 통해 달성되는 이미지 파일 스트림을 얻는 것입니다.
ImageStream = PersonImage.PostedFile.InputStream
이미지 콘텐츠를 저장하는 데 사용할 준비가 된 바이트 배열 ImageContent가 있습니다. 전체 이미지는 Stream 개체의 Read 메서드를 통해 읽습니다. 이 메서드에는 다음과 같은 세 가지 매개 변수가 있습니다.
#복사된 이미지 콘텐츠의 대상 위치
#읽기시작위치
#읽어야 할 하위 섹션은 다음과 같이 선언됩니다.
intStatus = ImageStream.Read(ImageContent, 0, intImageSize)
이제 전체 이미지 내용을 읽습니다. 다음으로 이미지 내용을 SQL 데이터 테이블에 삽입해야 합니다. 저장 프로시저를 사용하여 이미지 유형과 이미지를 SQL 데이터 테이블에 삽입합니다. 위의 코드 목록을 본다면 데이터 유형을 SqlDbType.Image로 설정했음을 알 수 있습니다. 이러한 방식으로 이미지를 SQL SERVER 데이터베이스에 성공적으로 저장했습니다.