ClassicASP 이미지 파일 디비 저장 및 BLOB필드 이미지 나타내기
페이지 정보
본문
출처 : http://sqler.pe.kr/web_board/view_list.asp?id=76384&read=431&part=myboard1
전에 이미지를 테이블 컬럼에 넣는 작업을 했었는데요. 그때는 tabs upload라는 컴포넌트를 이용해서 했습니다. 다음 예제를 참고하세요.
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UploadFile]') and OBJECTPROPERTY(id,
N'IsUserTable') = 1)
drop table [dbo].[UploadFile]
GO
CREATE TABLE [dbo].[UploadFile] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[filename] [varchar] (50) COLLATE Korean_Wansung_CI_AS NOT NULL ,
[filedata] [image] NULL ,
[body] [text] COLLATE Korean_Wansung_CI_AS NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
<%@ Language=VBScript %>
<% Option Explicit
'-----------------------------------------------------------------------
'TABS Upload Example: Database Upload
'
'--- Copyright (c) 2003 TABS Laboratories Corporation
'--- Mail: help@tabslab.com WWW: http://www.tabslab.com
'-----------------------------------------------------------------------
%>
<html>
<head>
<title>데이터베이스 업로드 예제</title>
</head>
<body>
<%
Dim Upload
'업로드를 처리할 오브젝트를 생성합니다.
Set Upload = Server.CreateObject("TABS.Upload")
'업로드를 시작합니다.
Upload.Start "C:\TEMP"
'첨부 파일이 있을 경우 데이터베이스에 저장합니다.
If Upload.Form("uploadFile").FileSize <> 0 Then
Dim ConnStr, Rs, SQL
'데이터베이스 연결 문자열을 수정해야 합니다.
ConnStr = "PROVIDER=SQLOLEDB;Password=;User ID=;Initial Catalog=;Data Source="
'ADO 레코드셋 오브젝트를 생성합니다.
Set Rs = Server.CreateObject("ADODB.Recordset")
SQL = "UploadFile"
Rs.Open SQL, ConnStr, 1, 3
Rs.AddNew
'"filename" 필드를 기록한다.
Rs("filename") = Upload.Form("uploadFile").FileName
Rs("body") = "테스트 업로드 입니다."
'업로드된 파일 데이터를 "filedata" 필드에 기록한다.
Upload.Form("uploadFile").SaveAsBlob Rs("filedata")
Rs.Update
Rs.Close
Response.Write "저장이 완료 되었습니다."
Else
Response.Write "업로드된 파일이 없습니다."
End If
Set Upload = Nothing
%>
</body>
</html>
출처 : http://support.microsoft.com/kb/601057/ko
ASP에서 BLOB필드에 저장된 이미지를 나타내는 방법
대부분의 Internet browser들은 GIF와 JPEG 이미지를 지원한다. 이미지를 보여주기 위해서, 브라우저는 웹 서버로부터 이미지를 요청한다. 서버는 HTTP헤더의 MIME형식을 IMAGE/GIF 또는 IMAGE/JPEG를 포함함으로써, 이미지를 브라우저로 보낸다. 이러한 작업들을 Active Server Page를 이용하여 가능하다. 다음의 예제는 이미지에 대한 HTTP헤더를 작성하고 GIF파일을 브라우저에 제공하기 위해서 SQL서버에 있는 Image필드에 있는 이진 정보를 사용한다.
FILE: SHOWIMG.ASP
<%@ LANGUAGE="VBSCRIPT" %>
<%
' Clear out the existing HTTP header information
Response.Expires = 0
Response.Buffer = TRUE
Response.Clear
' Change the HTTP header to reflect that an image is being passed.
Response.ContentType = "image/gif"
Set cn = Server.CreateObject("ADODB.Connection")
' The following open line assumes you have set up a System DataSource by the name of myDSN.
cn.Open "DSN=myDSN;UID=sa;PWD=;DATABASE=pubs"
Set rs = cn.Execute("SELECT logo FROM pub_info WHERE pub_id='0736'")
Response.BinaryWrite rs("logo")
Response.End
%>
위의 스크립트는 화면에 이미지만을 보여준다. HTML이나 ASP 문서로부터 이미지를 보여주려고 한다면 <IMAGE> 태그 안에 위의 파일을 참조한다.예를 들어, 이미지를 이 이미지를 설명하는 텍스트와 함께 화면에 나타내려면 다음과 같은 HTML페이지를 사용한다.
<HTML>
<HEAD><TITLE>Display Image</TITLE></HEAD>
<BODY>
This page will display the image New Moon Books from a SQL Server 6.5 image field.<BR>
<IMG SRC="SHOWIMG.ASP">
</BODY>
</HTML>
이 방법은 다른 형식의 이진 데이터에도 적용할 수 있다. 이를 위해 필요한 것은 표현될 Content의 형식이 무엇인지를 브라우저에게 알려주는 것이다. Response.ContentType에 적절한 Mine형식을 설정함으로써 브라우저에게 Content형식을 알려줄 수 있다. 예를 들어, 워드 문서를 나타내기 위해서는 ContentType = "application/msword"으로 설정한다.
참고자료
http://fillgun.tistory.com/archive/20080416
http://sqler.pe.kr/web_board/view_list.asp?id=76384&read=431&part=myboard1
http://support.microsoft.com/kb/601057/ko
댓글목록
등록된 댓글이 없습니다.