PHP 파일 전송하기
- 공유 링크 만들기
- 이메일
- 기타 앱
PHP 파일 전송하기
웹 브라우저에서 웹 서버로 파일을 전송하는데에 있어서 input 태그 중 file 타입의 컨트롤을 사용하게 됩니다. 근데 HTML에서 전송하는 것은 구현하기 쉬운데 PHP 부분에서 파일을 받는 부분은 헷갈리기도 하고 신경쓸 것도 있더군요. 그래서 안 잊어버리기 위해 정리를 합니다.
1. 클라이언트 부분의 HTML
아래 코드를 통해서 웹 서버로 전송을 할 수 있는 폼을 만들어봅시다.
그러면 화면에 파일 전송을 위한 텍스트박스와 버튼이 나타나게 됩니다(크롬이나 모바일 브라우저는 버튼과 파일명만).
2. 서버 부분의 PHP
위 HTML 코드의 input 태그의 name 부분을 잘 보고 작성하셔야 합니다.
0) echo "Error raised"; else { echo "File type : " . $_FILES['uploaded']['type']; $fileaddr = "files/" . $_FILES['uploaded']['name']; if(is_uploaded_file($_FILES['uploaded']['tmp_name'])) { if(!move_uploaded_file($_FILES['uploaded']['tmp_name'], $fileaddr)) echo "Error raised from file moving process"; } else echo "File upload failed."; } ?>
이 코드를 이용하면 서버로 파일을 전송할 수 있게 되는 것이지요.
$_FILES 변수는 전역 변수로써 전송된 파일을 알아올 수 있습니다. 폼으로 전송된 파일들이 여러개가 될 수 있으므로 여기서 먼저 어떤 파일을 처리할 지 선택해야 하지요. HTML에서는 uploaded라는 입력 태그를 사용했기 때문에 여기서도 uploaded에 대해 처리하고 있습니다.
error라고 하는 부분에서는 오류에 대해 알아올 수 있습니다.
0이면 오류가 없는 것입니다.
1이면 파일의 업로드 최대 한도 파일 크기가 초과했다는 것입니다. php.ini에 명시된 파일 크기 한도를 뜻합니다.
2이면 최대 파일 크기가 초과했다는 것입니다. HTML 폼에서 명시한 파일 크기 한도를 뜻합니다.
3이면 파일이 일부분만 전송되었다는 것입니다.
4이면 파일이 업로드되지 않았다는 것입니다.
5인 경우는 알려지지 않았습니다.
6이면 임시 디렉터리가 없다는 것입니다. 파일이 전송되면 무조건 임시 디렉터리로 가기 때문에 발생하는 오류입니다.
7이면 디스크에 쓸 수 없다는 것입니다. 권한이 없거나 남은 공간이 없을 경우 발생합니다.
name이라고 하는 부분에서는 파일의 원본 이름을 가져올 수 있습니다.
tmp_name이라고 하는 부분에서는 파일의 임시 디렉터리에서의 이름을 가져올 수 있습니다.
is_uploaded_file 함수는 해당 임시 파일이 임시 디렉터리에 있는지 확인합니다. 없을 경우 업로드되지 않은 것입니다.
move_uploaded_file 함수는 임시 디렉터리에 있는 해당 파일을 지정한 경로로 이동합니다. 실패할 경우 해당 디렉터리에 권한이 없을 수 있습니다.
from http://daramkun.tistory.com/89 by ccl(S) rewrite - 2020-03-06 17:54:16
- 공유 링크 만들기
- 이메일
- 기타 앱
댓글
댓글 쓰기