본문 바로가기
WEB HACKING/웹 해킹[실습]

Php로 웹 개발하기 : 게시판(13) - 파일 확인

by madevth 2021. 12. 2.
반응형

저번 포스팅에서는 파일을 업로드하는 기능을 구현했었다.

파일을 확인(View), 삭제(Delete), 다운로드(Download)하는 기능을 추가로 만들 것이다.

 

우선 파일 이름을 저장해놓아야 표시, 삭제, 다운로드할 때 사용할 수 있으므로 MySQL에 추가하자.

ALTER table board add column `file` varchar(20);

 

이제 게시판에 글을 작성할 때, file을 업로드하면 파일 이름을 MySQL에 저장하고, file이 없으면 NULL을 저장하도록 코드를 추가해주자.

[board_create.php]

if($_FILES['upload_file'] != NULL){
    $tmp_name = $_FILES['upload_file']['tmp_name'];
    $name = $_FILES['upload_file']['name'];
    $path = "./files/$username";
    if(!file_exists($path)){
        mkdir($path, 0777, true);
        chmod($path, 0777);
        $up = move_uploaded_file($tmp_name, "$path/$name");
    }else{
        $up = move_uploaded_file($tmp_name, "$path/$name");
    }
}else{
    $name = "NULL";
}

$sql = "INSERT INTO board (username, title, date, time, content, file)
        VALUES ('$username', '$title', '$date', '$time', '$content', '$name');";

 

글을 읽을 때는 View, Delete(작성자에게만 활성화), Download를 할 수 있도록 구현하자.

[read.php]

$file_name = $row['file'];

<div>
   <a href="http://localhost/web_dev/files/<?=$username?>/<?=$file_name?>" target="_blank">View</a>
   <a href="#">Delete</a>
</div>

우선 View 기능만 만들어보았다.

test 계정으로 로그인해서 olaf.jpeg를 추가하고 MySQL에 잘 저장되는지, read 화면에서 잘 뜨는지 확인해보자.

olaf 파일을 추가하고 게시판을 확인해보니, View와 Delete 글씨가 보인다.

 

MySQL을 확인해보니, test 계정으로 업로드한 파일 이름이 잘 저장되었다.

 

View 버튼을 클릭하니 사진이 잘 뜨는 것을 확인할 수 있다.

 

나중에 3가지 기능을 모두 구현하고 나면, 사진은 <img> 태그를 이용해서 바로 보여주고, pdf 같은 파일은 위와 같이 view/download 할 수 있도록 구현하는 것도 좋을 것 같다.

반응형

댓글