웹마스터 팁
page_full_width">
php로 이미지를 mysql디비 저장하고 보여주는 소스
2004.07.30 11:29
http://www.koreaphp.co.kr/tip_board/board_read.php?page=2&block=1&no=61&cate=43&parent=61- DB에 File을 저장
BLOB type을 이용하여 DB에 직접 저장
- Server의 지정된 Directory에 저장
파일의 위치와 이름만 DB에 저장
별도의 입출력 루틴이 필요하지 않다는 장점
파일의 수가 많아지면 관리가 힘듬
File의 실제 위치와 DB의 정보 불일치 가능성
File의 이름 충돌
- 디비 구조
CREATE TABLE gallery(
id INT NOT NULL auto_increment, image BLOB NOT NULL,
title VARCHAR(100) DEFAULT '' NOT NULL,
width SMALLINT(6) DEFAULT '0' NOT NULL,
height SMALLINT(6) DEFAULT '0' NOT NULL, file_size INT , # 파일크기
PRIMARY KEY (id)
) ;
- 이미지 받아들이는 HTML 소스
<form action='gallery.html' method='POST' enctype='multipart/form-data'>
<INPUT TYPE=hidden name=mode value=insert>
<TABLE>
<TR> <TD>올릴 이미지:</TD>
<TD><input type='file' name='image'></TD></TR>
<TR> <TD>제목</TD>
<TD><input type='text' name='title'></TD></TR>
<TR> <TD colspan = 2>
<input type='submit' value='이미지 전송 '></TD></TR>
</TABLE>
</form>
- 이미지를 저장하는 php 소스
$size = GetImageSize($image);
$width = $size[0];
$height = $size[1];
$imageblob = addslashes(fread(fopen($image, "r"), filesize($image)));
$filesize = filesize($image) ;
$query=" INSERT INTO gallery VALUES ('', '$imageblob', '$title', '$width','$height', '$filesize', '$detail' )" ;
$result=mysql_query($query,$connect );
- 이미지 리스트 보여주는 소스
$query= "select id, title, width, height from gallery order by id DESC " ;
$result=mysql_query($que1,$connect );
$row=mysql_fetch_array($result);
echo( "<table bordr=1 width=90% align=center>
<tr> <td>이미지</td>
<td>제목</td>
</tr>
");
while($row){
echo ( "<tr><td><img src=./view.html?id=$row[id]
width=$row[width] height=$row[height] ></td>
<td>$row[title]</td> ");
$row=mysql_fetch_array($result);
}
echo( "</table>");
}
- 이미지 보여주는 소스
<?php
$connect=mysql_connect( "localhost", "계정명", "비번");
mysql_select_db( "디비명",$connect);
$query= "select * from gallery where id=$id" ;
$result=mysql_query($query,$connect );
$row=mysql_fetch_array($result);
Header( "Content-type: image/jpeg");
echo $row[image];
mysql_close();
?>
BLOB type을 이용하여 DB에 직접 저장
- Server의 지정된 Directory에 저장
파일의 위치와 이름만 DB에 저장
별도의 입출력 루틴이 필요하지 않다는 장점
파일의 수가 많아지면 관리가 힘듬
File의 실제 위치와 DB의 정보 불일치 가능성
File의 이름 충돌
- 디비 구조
CREATE TABLE gallery(
id INT NOT NULL auto_increment, image BLOB NOT NULL,
title VARCHAR(100) DEFAULT '' NOT NULL,
width SMALLINT(6) DEFAULT '0' NOT NULL,
height SMALLINT(6) DEFAULT '0' NOT NULL, file_size INT , # 파일크기
PRIMARY KEY (id)
) ;
- 이미지 받아들이는 HTML 소스
<form action='gallery.html' method='POST' enctype='multipart/form-data'>
<INPUT TYPE=hidden name=mode value=insert>
<TABLE>
<TR> <TD>올릴 이미지:</TD>
<TD><input type='file' name='image'></TD></TR>
<TR> <TD>제목</TD>
<TD><input type='text' name='title'></TD></TR>
<TR> <TD colspan = 2>
<input type='submit' value='이미지 전송 '></TD></TR>
</TABLE>
</form>
- 이미지를 저장하는 php 소스
$size = GetImageSize($image);
$width = $size[0];
$height = $size[1];
$imageblob = addslashes(fread(fopen($image, "r"), filesize($image)));
$filesize = filesize($image) ;
$query=" INSERT INTO gallery VALUES ('', '$imageblob', '$title', '$width','$height', '$filesize', '$detail' )" ;
$result=mysql_query($query,$connect );
- 이미지 리스트 보여주는 소스
$query= "select id, title, width, height from gallery order by id DESC " ;
$result=mysql_query($que1,$connect );
$row=mysql_fetch_array($result);
echo( "<table bordr=1 width=90% align=center>
<tr> <td>이미지</td>
<td>제목</td>
</tr>
");
while($row){
echo ( "<tr><td><img src=./view.html?id=$row[id]
width=$row[width] height=$row[height] ></td>
<td>$row[title]</td> ");
$row=mysql_fetch_array($result);
}
echo( "</table>");
}
- 이미지 보여주는 소스
<?php
$connect=mysql_connect( "localhost", "계정명", "비번");
mysql_select_db( "디비명",$connect);
$query= "select * from gallery where id=$id" ;
$result=mysql_query($query,$connect );
$row=mysql_fetch_array($result);
Header( "Content-type: image/jpeg");
echo $row[image];
mysql_close();
?>
댓글 2
-
Simsim
2004.10.11 18:09
파일이름 충돌은.. 걍 time(); 하나 붙여주면..? -
김현석
2005.12.20 19:03
정보가 많아지면
따로 화일 저장하고 화일정보만 DB에 저장한거하고
그림화일을 직접 DB에 저장해주는 것 하고
읽어들이는 속도나 서버의 부담 등 차이를 알고 싶어요.
제목 | 글쓴이 | 날짜 |
---|---|---|
유동아이피로 고정아이피 만들수있는 유틸 [27] | 론건맨 | 2003.10.10 |
xp어플 개발시 사진 회원 바로잡아 주는 함수 | 웹빌드 | 2014.03.09 |
날짜를 출력하는 간단한 소스입니다 | 낮은자 | 2014.03.07 |
[jQuery] 클릭하면 내용이 사라지는 방법 | 낮은자 | 2014.03.07 |
한글, 영문, 숫자, 특수문자 체크하는 함수 | ByteCMC | 2014.03.07 |
자주 쓰이는 정규표현식 모음 | 투니페이퍼 | 2014.03.06 |
css3 둥근테두리 만들기 | 낮은자 | 2014.03.06 |
XE 어플로 만들때 PUSH 기능처리 방법 | 웹빌드 | 2014.03.06 |
페이지 모듈에서 다국어 기능 작동 안 하는 버그 패치법 [1] | sejin7940 | 2014.03.04 |
폰갭 제작 어플 gcm 발송시 변수 | 웹빌드 | 2014.03.04 |
xe 홈페이지 폰갭으로 묶을때 | 웹빌드 | 2014.03.03 |
방명록 댓글 줄바꿈 | 메디칼온 | 2014.03.03 |
스케치북5 모바일 댓글 작성시 엔터를 쳤을 때 <br /> 코드 뜨는 문제 해결 [7] | oryan | 2014.02.23 |
홈페이지 접속자, 글(댓글) 작성자 국가 국기 표시 적용 방법
[19]
![]() | 라싸 | 2014.01.08 |
[팁 시리즈 2] 한글 도메인이나 영문 도메인 설정을 잘못 건드려서 사이트의 모든 기능이 거의 먹통입니다! | Omega3 | 2014.03.01 |
[팁 시리즈 1] 웹 사이트 이전 및 복구/백업(이)가 되지 않습니다! [6] | Omega3 | 2014.02.28 |
정규식 문법 | 웹엔진 | 2014.02.28 |
썸네일 생성시 crop 이 상단 기준으로 생성되게 하는 방법 [5] | sejin7940 | 2013.10.04 |
기초설명_알고리즘(algorithm) [2] | ifnelse | 2008.07.28 |
사이트 url에 자꾸 index.php 가 붙어다닐때
[7]
![]() | 마시멜 | 2011.05.01 |