큰 크기의 이진데이터를 저장하기 위해 사용
대용량 데이터 저장
이진데이터사용
대부분의 데이터베이스 지원
TINYBLOB : 작은 크기의 BLOB
BLOB: 보통 크기의 BLOB
MEDIUMBLOB: 보통 보다 큰 크기의 BLOB
LONGBLOB: 가장 큰 크기의 BLOB
| DB 컬럼 생성때 사용 |
|---|
![]() |
일반 sql문과 사용법 같음
대신 경로를 업로드할때 사용하는 move_uploaded_file대신 file_get_contents사용
move_uploaded_file | file_get_contents |
|---|---|
| 클라이언트(사용자의 웹 브라우저)로부터 업로드된 파일을 서버의 지정된 디렉토리로 이동시키는 것 | PHP에서 파일의 내용을 읽어오는 함수. 주로 파일을 읽어서 그 내용을 문자열로 반환할 때 사용 |
ex)
$tmpfile=$_FILES['b_file']['tmp_name'];
$name=$_FILES['b_file']['name'];
$folder="upload/".$name;
move_uploaded_file($tmpfile,$folder);
$sql_insert="INSERT INTO board (title, content, date, author, pwd, file) VALUES('$title', '$content', '$date', '$author', '$password', '$name')";
$filecontent=file_get_contents($_FILES['bfile']['tmp_name']);
$filename=$_FILES['bfile']['name'];
$sql="INSERT INTO uploadt (title,content,filename,filecontent) VALUES('$title','$content','$filename','$filecontent')";
$result=mysqli_query($conn,$sql);
$filecontent=file_get_contents($_FILES['bfile']['tmp_name']);
$filename=$_FILES['bfile']['name'];
$conn=mysqli_connect('','','','sqli');
$stmt = $conn->prepare("INSERT INTO uploadt (title, content, filename, filecontent) VALUES (?, ?, ?, ?)");
$n=NULL;
$stmt->bind_param('sssb',$title,$content,$filename,$n);
$stmt->send_long_data(3,$filecontent);
if($stmt->execute()){ ?>
<a href="./index.php">go</a>
<?php }else{
echo "fail". $stmt->error;
}
?>
<a href="upload/DB에저장된 이미지 이름 ex)<?=$row['file']?" class="download-link" download>
<a href="download.php?good=이미지불러올번호">
<?php
$i=$_GET['good'];
$conn=mysqli_connect('localhost','root','123456789a','sqli');
$sql="SELECT * FROM uploadt WHERE idx =$i";
$result=mysqli_query($conn,$sql);
$row=mysqli_fetch_assoc($result);
if($row){
$filename=$row['filename'];
$filecontent=$row['filecontent'];
header("Content-Type: image/png");
header("Content-Disposition: attachment; filename=\"$filename\"");
echo $filecontent;
echo "<script>history.back(1);</script>";
}
?>