8주차 과제(WEB)

Peroro·2023년 5월 16일
0
post-custom-banner

결과물

  • 우선 write.php에서 업로드 기능만 구현해 두었다.
  • 파일 위치를 잘 설정해줬어야 했다. 파일 위치를 제대로 설정하지 않아 업로드가 되지 않는 불상사가 생겼었다.
  • file에 한정해서 chmod 777을 했었다. 이렇게 하면 문제가 생길 수도 있다고 하기에 나중에 접근 권한을 다르게 바꿔야할 것 같다.

코드

//write.php 일부분
    <form method="post" action="write_action.php" class = "writeForm" enctype="multipart/form-data">
        <div>
            <input type="text" name = "title" style="width:600px" id = "title" class = "titleFrom" value = <?php echo $title; ?> >
        </div>
        <div>
            <input type="text" name = "detail" style="width:600px;height:400px" id = "detail" class = "detailForm" value = <?php echo $detail; ?> >
        </div>
        <div>
            <input type="hidden" name="bid" id = "bid" value = <?php echo $bid; ?> >
        </div>
        <div>
            <label for="upfile">첨부파일</label>
            <input type="file" name="upfile" id="upfile">
        </div>
        <button type="submit">작성</button>
        <button type="button" name = "cancel" id = "name" onclick="location.href='read_index.php'">취소</button>
    </form>
</body>
</html>
  • form에 enctype = "multipart/form-data"를 넣었다. 파일을 전송하기 위해 인코딩이 필요하게 되는데 이때 파일은 위와 같이 인코딩을 해야한다.
  • label과 input:file을 넣었다. upfild을 누르는 경우 파일을 넣을 수 있는 창이 나오게 된다.
//write_action.php 일부분
else{# write
            $tmpfile = $_FILES['upfile']['tmp_name'];
            $filename = $_FILES['upfile']['name'];
            $folder = "./file/upload/".$filename;

            move_uploaded_file($tmpfile, $folder);

            $q = "INSERT INTO board(id, title, detail, file, created) VALUES ('$id', '$title', '$detail', '$filename', default)";
        }
  • 우선 mysql의 board 테이블에 file 이름을 저장하는 컬럼인 file을 추가했다.
  • $folder의 경우 file이 저장되는 위치를 말하는데, write_action.php는 /var/www/html에 위치한다. 그리고 upload의 경우 /var/www/html/file/upload에 위치하는데, write_action.php의 상대 경로를 $folder에 넣어야 한다.
  • move_uploaded_file은 tmp에 임시 저장되어 있는 파일을 $folder로 옮기는 것을 말한다.
  • 우선은 글을 작성할 때에만 첨부파일을 추가하도록 만들었다. 만약 수정하는 경우에도 이 코드를 넣으면 첨부파일이 중복으로 저장되는 경우가 발생할 수도 있을 것 같아 일단은 작성시에만 첨부할 수 있도록 했다.

앞으로 할 일

  • 업로드를 넣었으니 이제 다운로드를 할 수 있게 만들어야 할 것이다. read.php 파일에 추가할 예정이다.
profile
오늘 공부한 것을 올리는 공간 / 일주일에 글 3개 / 블로그 이전 : https://perorochan321.tistory.com/
post-custom-banner

0개의 댓글