테스트 사이트 - 개발 중인 베타 버전입니다

move_upload_file 함수 관련 채택완료

CtrlV 3년 전 조회 3,521

/bbs/write_update.php의

게시판 첨부파일을 작성하면 첨부파일 로직의 마지막에

$error_code = move_uploaded_file($tmp_file, $dest_file) or die($_FILES['bf_file']['error'][$i]);

이렇게 처리가 되는데

 

$error_code = @copy($tmp_file, $dest_file) or die($_FILES['bf_file']['error'][$i]);

@unlink($tmp_fle);

이렇게 처리하는 것과 차이가 있을까요?

당연히 한 번 더 거치기 때문에 비효율 적이긴 한데

이렇게 써야 하는 이유가 있어서 일단 해보니 되긴 하는데

문제나 어떤 차이가 있을까요?

댓글을 작성하려면 로그인이 필요합니다.

답변 1개

채택된 답변
+20 포인트
그누위즈

실제로는 같은 결과가 맞습니다.

move_uploaded_file() 함수는 파일을 이동하는 함수입니다.

즉 A디렉터리에서 B디렉터리로 이동을 의미하는 함수이며,

 

copy() 함수는 말 그대로 복사를 의미합니다.

복사는 A디렉터리와 B디렉터리 모두 같은 파일이 있을 수 있음을 의미합니다.

하지만 마지막에 @unlink로 원본 파일을 삭제하였으니,

 

두 코드의 결과는 같다고 볼 수 있습니다.

-------------------

move_uploaded_file() 함수는 filename 으로 지정된 파일이 유효한 업로드 파일인지를 확인합니다.(PHP의 HTTP POST로 업로드되었음을 의미)

파일이 유효하면 대상에서 지정한 경로로 파일을 이동시킵니다.

filename이 유효한 업로드 파일이 아니면, 아무작업도 발생되지않고, false를 반환합니다.

 

copy() 함수는 복사가 성공하면 true, 그렇지않으면 false를 반환합니다.

 

따라서 해당 파일이 유효한지를 검증은 하지않게되고, 단순 복사를 했냐 안했냐만 따지게됩니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

C
CtrlV
3년 전
일단 이상없어서 시행하고 싶긴하지만 확신이 안서 망설이고 있었는데
차이점까지 잘 알려주셔서 도움이 되었습니다
빠른 답변 감사합니다.

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인