본문 바로가기
Coding/PHP

[PHP] PHP에서 MySQL로 간단한 이미지 업로드 및 불러오기

by jamong1014 2022. 11. 28.
반응형

먼저 BLOB 데이터 타입은 4가지 종류가 있음

 

TINYBLOB = 2^8 - 1 [256 Bytes]

BLOB = 2^16 -1 [64 KB]

MEDIUMBLOB = 2^24 - 1 [8 MB]

LONGBLOB = 2^32 - 1 [4 GB]

 

이미지 용량보다 적은 데이터 타입으로 컬럼을 생성하게 되면 데이터깨짐.

본인은 적당한 MEDIUMBLOB로 생성


먼저 DB 생성

CREATE TABLE TESTIMAGE (
IDX INT(6) AUTO_INCREMENT NOT NULL PRIMARY KEY,
IMAGE MEDIUMBLOB);


이미지 업로드 PHP 코드 작성

uploadimage.php

<html>
    <head>
        <title>Upload image</title>
        <style>
            body{
                background-color: lightblue;
            }
            input{
                width: 50%;
                height: 5%;
                border: 1px;
                border-radius: 05px;
                padding: 8px 15px 8px 15px;
                margin: 10px 0px 15px 0px;
                box-shadow: 1px 1px 2px 1px grey;
                font-weight: bold;
            }
            </style>
    </head>
    <body>
        <center>
            <h1>upload / insert ad image into database using php mysql</h1>

            <form action="" method="POST" enctype="multipart/form-data">
                <label> choose an profile pic: </label></br>
                <input type="file" name="image" id="image" /> <br>

                <input type="submit" name="upload" value="upload image/data" /> <br>

            </form
        </center>
    </body>
</html>
<?php
    include "db.php";

if(isset($_POST['upload']))
{
    $file = addslashes(file_get_contents($_FILES["image"]["tmp_name"]));

    $query = "insert into studytest (image) values ('$file')";
     
    
    if(mysqli_query($dbh, $query))
    {
        echo '<script type="text/javascript"> alert("image profile uploaded"); </script>';
    }else
    {
        echo '<script type="text/javascript"> alert("image profile uploaded"); </script>';
    }

}
?>

* enctype="multipart/form-data" = 모든 문자를 인코딩하지 않음을 명시

* $_FILES["image"]["tmp_name"] = 웹 서버에 임시로 저장된 파일의 위치


이미지 불러오기 

loadimage.php

<html>
    <head>
        <meta charset="utf-8">
    </head>
<body>
    <center>
        <form action="" method="POST" enctype="multipart/form-data">
            <table>
                <thead>
                    <tr>
                        <th>IAMGE</th>
                     
                    </tr>
                </thead>
                <?php
                    include "db.php";

                    $query = "select * from testimage";
                    $query_run = mysqli_query($dbh, $query);
                    
                    while($row = mysqli_fetch_array($query_run))
                    {
                        echo '<img src="data:image;base64,'.base64_encode($row['image']).'" alt="Image" style="width: 100px; height: 100px;">';
                       
                    
                    }
                ?>
            </table>
        <form>
    </cetner>
</body>
</html>

* data:image;base64,'.base64_encode($row['image']) = base64로 인코딩하여 출력

 

반응형