웹마스터 팁
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
^.^ 그림을 DB에 집어넣어 버리기..
2003.01.30 11:12
^.^ 언제나 재밌는 소스만 들고오는 아이쿠입니다.
이번에도 역시 늘그렇듯이 서버에 부담을 주는 소스 입니다.
그림파일을 DB에 넣는 방법입니다.
그림파일을 Base64방식으로 엔코딩후 DB에 저장 불러올때는 디코딩해서 보여줍니다. ^^;
MySQL 기준입니다. ^^;
DB에 테이블을 일단 만들어야 겠지요.? ^^;
---------------------------------------------------------------------------
CREATE TABLE upfile (
aduid mediumint(9) unsigned DEFAULT '0' NOT NULL auto_increment,
comment text NOT NULL,
PRIMARY KEY (aduid)
);
---------------------------------------------------------------------------
upload.php 그림을 DB에 저장하는 소스입니다.
---------------------------------------------------------------------------
<?PHP
$size = filesize("이미지화일이름"); // 이미지 화일의 크기를 구합니다.
$fp = fopen("이미지화일이름","r");
$haha = fread($fp,$size); // 이미지화일 포인터($fp)를 이미지크기($size) 만큼 읽습니다
fclose($fp);
$end = base64_encode("$haha"); // $haha를 base64 형식으로 변환(엔코딩)합니다
$dbconn = mysql_connect("localhost","사용자아이디","사용자비밀번호") || die("데이터베이스 연결에 실패하였습니다."); // 데이타베이스에 연결합니다.
$status = mysql_select_db("db_name");
$query = "INSERT INTO upfile (comment) VALUES ('$end')"; // $end를 테이블에 넣습니다.
$result = mysql_query($query);
echo("완료");
?>
----------------------------------------------------------------------------------------------------
그럼 저장이 완료 됩니다. 물론 실행시키실때마나 DB에 추가됩니다.
Load.php 그림을 DB에서 불러오는 소스입니다.
----------------------------------------------------------------------------------------------------
<?PHP
$dbconn = mysql_connect("localhost","ibuser","ibpass") || die("데이터베이스 연결에 실패하였습니다.");
$status = mysql_select_db("db_name");
// 데이타베이스에 연결합니다.
$query = "SELECT comment FROM upfile WHERE aduid = 1"; // 테이블에서 aduid필드가 1인 comment를 선택합니다. ^^; 저장데이터가 여러개라면 당연히 숫자만 적당히 조절 선택하여 불러올수 있습니다.
$result = mysql_query($query);
$row = mysql_fetch_row($result);
$my_name = $row[0];
$end = base64_decode("$my_name"); // $haha를 base64 형식으로 만든 텍스트를 복원(디코딩)합니다
echo("$end"); //
?>
----------------------------------------------------------------------------------------------------
^.^ 속도도 괜찮고 쓸만한것 같습니다. 다만 DB에 조금 무리를 줄꺼 같네요.. ^^;
용량이라도 큰 그림을 집어 넣고 불러올려면.. 그만큼 DB를 붙잡고 있어야 하니.. ^^;
그럼 이만 줄입니다. ^^;
이번에도 역시 늘그렇듯이 서버에 부담을 주는 소스 입니다.
그림파일을 DB에 넣는 방법입니다.
그림파일을 Base64방식으로 엔코딩후 DB에 저장 불러올때는 디코딩해서 보여줍니다. ^^;
MySQL 기준입니다. ^^;
DB에 테이블을 일단 만들어야 겠지요.? ^^;
---------------------------------------------------------------------------
CREATE TABLE upfile (
aduid mediumint(9) unsigned DEFAULT '0' NOT NULL auto_increment,
comment text NOT NULL,
PRIMARY KEY (aduid)
);
---------------------------------------------------------------------------
upload.php 그림을 DB에 저장하는 소스입니다.
---------------------------------------------------------------------------
<?PHP
$size = filesize("이미지화일이름"); // 이미지 화일의 크기를 구합니다.
$fp = fopen("이미지화일이름","r");
$haha = fread($fp,$size); // 이미지화일 포인터($fp)를 이미지크기($size) 만큼 읽습니다
fclose($fp);
$end = base64_encode("$haha"); // $haha를 base64 형식으로 변환(엔코딩)합니다
$dbconn = mysql_connect("localhost","사용자아이디","사용자비밀번호") || die("데이터베이스 연결에 실패하였습니다."); // 데이타베이스에 연결합니다.
$status = mysql_select_db("db_name");
$query = "INSERT INTO upfile (comment) VALUES ('$end')"; // $end를 테이블에 넣습니다.
$result = mysql_query($query);
echo("완료");
?>
----------------------------------------------------------------------------------------------------
그럼 저장이 완료 됩니다. 물론 실행시키실때마나 DB에 추가됩니다.
Load.php 그림을 DB에서 불러오는 소스입니다.
----------------------------------------------------------------------------------------------------
<?PHP
$dbconn = mysql_connect("localhost","ibuser","ibpass") || die("데이터베이스 연결에 실패하였습니다.");
$status = mysql_select_db("db_name");
// 데이타베이스에 연결합니다.
$query = "SELECT comment FROM upfile WHERE aduid = 1"; // 테이블에서 aduid필드가 1인 comment를 선택합니다. ^^; 저장데이터가 여러개라면 당연히 숫자만 적당히 조절 선택하여 불러올수 있습니다.
$result = mysql_query($query);
$row = mysql_fetch_row($result);
$my_name = $row[0];
$end = base64_decode("$my_name"); // $haha를 base64 형식으로 만든 텍스트를 복원(디코딩)합니다
echo("$end"); //
?>
----------------------------------------------------------------------------------------------------
^.^ 속도도 괜찮고 쓸만한것 같습니다. 다만 DB에 조금 무리를 줄꺼 같네요.. ^^;
용량이라도 큰 그림을 집어 넣고 불러올려면.. 그만큼 DB를 붙잡고 있어야 하니.. ^^;
그럼 이만 줄입니다. ^^;
댓글 13
-
피터팬
2003.02.14 09:31
학교홈있을걸 아마 축구부 홈도 있는걸로 아는데 배너하나 있으면 좋을듯... 학교홈있을걸 아마 축구부 홈도 있는걸로 아는데 배너하나 있으면 좋을듯... 학교홈있을걸 아마 축구부 홈도 있는걸로 아는데 배너하나 있으면 좋을듯... 학교홈있을걸 아마 축구부 홈도 있는걸로 아는데 배너하나 있으면 좋을듯... 학교홈있을걸 아마 축구부 홈도 있는걸로 아는데 배너하나 있으면 좋을듯... 학교홈있을걸 아마 축구부 홈도 있는걸로 아는데 배너하나 있으면 좋을듯... 학교홈있을걸 아마 축구부 홈도 있는걸로 아는데 배너하나 있으면 좋을듯... 학교홈있을걸 아마 축구부 홈도 있는걸로 아는데 배너하나 있으면 좋을듯... 학교홈있을걸 아마 축구부 홈도 있는걸로 아는데 배너하나 있으면 좋을듯... 학교홈있을걸 아마 축구부 홈도 있는걸로 아는데 배너하나 있으면 좋을듯... -
리틀루피
2003.02.02 22:44
용량 제한, DB 무한인 곳에서는 유용할까요;; -
이플립
2003.02.03 21:21
리틀루피// 제가 원래 사상이 불순해서 그런지 이런 생각 듭니다.
그러다 DB서버리면 어쩌죠???
딴이 아닙니다. -_-++ -
아이리버
2003.02.04 16:53
푸하핫....^^
DB용량 무제한으로 준다는곳에서 쓰면..... 캬캬~~~~~ -
민이
2003.02.05 14:11
재밌네요.. ^^
저도 전에 시도한 적이 있었는데... 여전히 파일을 쓰는 이유가 안정성 때문인 것도 같구... 예를 들면... DB의 테이블이 깨져버리면 그 안에 든 이미지들이 다 날아가잖아요.. 그런데, 파일로 저장할 경우, 몇 개 깨진다 해도 나머지는 무사하니까...
하지만, 말씀하신 방법을 이미지가 아닌 다른 형식의 화일들을 올리는 데 사용한다면 보안상 큰 이점이 있을 듯 합니다.
아무래도, 웹서버니까 설정 등에 따라 노출되기 쉬운 보안 문서들을 그냥 화일로 올리기 보다는 이렇게 DB에 넣어놓는다면...
인트라넷 등 그룹웨어에서 이런 방법을 사용한다면 어떨까요..
^^ 담에 쓰게 되면 감사히 쓸께요.. 꾸벅 -
론건맨
2003.02.08 02:10
절대 링크는 걸지 못하겠군요 -
phase
2003.02.18 01:22
도셨나????????? -
Frёё™
2003.02.19 22:19
ㅡㅡ;phase 말이 인상적이네요...ㅡㅡ; 도셧나;; -
흑심품은연필
2003.04.07 18:17
Base64방식으로 하면 용량이 늘어 납니다 ^^;; -
고냉이 콱!
2003.04.27 01:02
그냥 이런것도 있다~ 는 식의
좀 엽기적이고 재미있는 소스정도로 보면 될것같은데....
"도셨나?" 라는 글은 악플로 보이네요 ㅡ,.ㅡ -
도키
2003.06.05 18:19
고냉이 콱!//phase님의 도셨나는 아이쿠님을 향한게 아니라 피터팬님을 향한거 같은데요..;;
제가 보기에도.... -_-;;;;
피터팬님이 저 코멘트를 남기실 때에는 저분이 사용하신 컴터 혹은 저 분의 정신상태 둘 중 하나는 분명 문제가 있었던듯.. -
PHASE
2003.10.16 08:52
에구... 오늘 필요한 소스가 있어서 검색하다가 이글을 발견했습니다.
제가 도셨나?고 말씀드린건 아이쿠님이 아니라... 피터팬님이에요...
그래도 다행인게 저 코멘트가 남아있어서...
만약 코멘트를 지웠더라면... 제가 난처해졌을텐데...
그리고 참 이상한게... 피터팬님 회원정보보니까
1 점 ( 작성글수 : 0, 코멘트 : 1 )
이렇게 되어있네요...
참으로 묘한 분이시네... -
iakbo
2003.10.23 00:09
우왕~~~
잘만하면 동영상도 집어 넣을 수 있....... ( '')=====o)TT)