mysql dp 에 그림 업로드하는 php 코드
글쓴이: ant01 / 작성시간: 일, 2012/08/26 - 3:07오후
아래는 php로 작성한 mysql에 그림 업로드하는 test프로그램입니다.
그런데 image라는 변수를 포스트로 받는 데 if(!empty($image))의 분기를 타지 않아
몇 개의 코드를 삽입했습니다. 그런데 echo $image; echo $_POST[image]; 모두 값을 출력하지 않습니다.
어디를 손 봐야 할까요?
<?php $connect=mysql_connect("localhost","php","test06") or die(mysql_error()); mysql_select_db("shop0") or die("데이타베이스를 선택할 수 없습니다."); echo $image; if(empty($image)) $image=$_POST[image]; echo $_POST[image]; if (!$_POST['uploaded']){ ?> <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" ENCTYPE="multipart/form-data"> Upload:<br><br> <input type="file" name="image"><br><br> <input type="hidden" name="uploaded" value="1"> <input type="submit" value="Upload"> </form> <?php } else { $ip=$REMOTE_ADDR; if (!empty($image)){ echo "jkdjd"; copy($image, "./temporary/".$ip.""); $filename1 = "./temporary/".$REMOTE_ADDR; $fp1 = fopen($filename1, "r"); $contents1 = fread($fp1, filesize($filename1)); fclose($fp1); $encoded=$contents1; //$encoded = chunk_split(base64_encode($contents1)); $query="INSERT INTO test (code,picture)"."VALUES ('1','$encoded')"; $result=mysql_query($query,$connect); unlink($filename1); } } ?>
Forums:
$_FILES 전역 변수를...
$_FILES 전역 변수를 이용하셔야 할듯합니다.
print_r($_FILES[image]);
해보세요
감사합니다. 그런데
알려주신대로 하니 이번에는 무조건 if(!empty($image))의 분기를 탑니다.
그리고 blob에 0byte가 저장됩니다.
이제는 어디를 손 봐야 할까요?
파일을 DB에 저장해본적이 없어서
파일을 DB에 저장해본적이 없어서, 정확히는 모르겠지만..
print_r($FILES[image]) 을 해보면 아래와 같이 출력됩니다.
Array ( [name] => test.jpg [type] => image/jpeg [tmp_name] => /tmp/phpAB2iA9 [error] => 0 [size] => 92006 )
파일이름, 타입, 임시로저장된파일, 에러, size 의 정보를 갖고 있습니다.
위의 코드를 참고로 해보면 답이 나오지 않을까요?
감사합니다.
알려주신대로 하니 그림 출력은 됩니다. 그런데 왜 저장은 안될까요? blob는 데이타 양만 클 뿐
다른 데이터 형처럼 쓰면 된다고 하는 것 같은데요?
지금도 계속 0byte 저장됩니다. 이유를 모르겠습니다.
일단 결과만 나오는 답변 :
일단 결과만 나오는 답변 : mysql_escape_string()
권장하는 답변 : http://kr.php.net/manual/en/pdostatement.bindparam.php
ps. file_get_contents()
https://xenosi.de/
여러분의 도움으로 코드 완성하였습니다. 감사합니다.
http://antonio.pyy.kr/index.php?mid=computer&document_srl=3979
에 작동 확인 후 소스 올려 놓았습니다. php5로 된 소스는 찾기 힘들 더군요.
참고들 하세요. addslashes 를 하니 잘 저장 되더군요.
그런데 결과가 다르네요.
하도 출력이 되질 않아서 db에 저장하기전의 데이터를 phpmyadmin에서 저장한 blob데이터와 비교해 보았습니다.
그런데 결과가 다르네요.
addslashes 단독으로, addslashes-mysql_escape_string ,mysql_escape_string-addslashes 모두 해 보았는데
결과는 모두 상이합니다.
이미 위에 글 보신 분들에게는 죄송하구요. 지금 왜 그런가 알아보는 중인데 누구 아시느 분이 좀 알려 주시면 감사하겠습니다.
아래는 비교 코드입니다.
송효진님의 답을 이제야 조금 알겠습니다. 감사합니다.
http://antonio.pyy.kr/index.php?mid=computer&document_srl=3984
에 출력되는 결과까지 확인하고 다시 정리하여 올렸습니다.
댓글 달기