> 백엔드 개발 > PHP 튜토리얼 > PHP에서 파일을 업로드할 때 발생하는 몇 가지 문제

PHP에서 파일을 업로드할 때 발생하는 몇 가지 문제

怪我咯
풀어 주다: 2023-03-12 15:20:01
원래의
1137명이 탐색했습니다.

이 글은 주로 PHP의 업로드파일 처리 문제 해석에 대한 관련 정보를 소개합니다. 매우 훌륭하고 참고할 만한 가치가 있습니다. 도움이 필요한 친구들이 참고할 수 있습니다.

브라우저에서 우리 자신의 정보를 편집할 때 업로드를 만나게 됩니다. 아바타; 도서관에서는 문서를 업로드할 것입니다. "업로드"라는 단어는 어디에나 있습니다.

 php는 최고의 언어입니다(다른 언어를 사용하는 프로그래머라면 저를 때리지 마세요...). PHP는 상호 작용을 처리하는 데 자연스러운 장점이 있으며 업로드된 파일을 처리하는 강력한 기능도 갖추고 있습니다.

 일반 데이터 제출과 마찬가지로 파일 업로드에도 양식이 필요합니다. 파일을 업로드하기 위한 특별한 양식을 만들어 보겠습니다.

<form enctype="multipart/form-data" action="upload_file.php" name="upload_form" method="post">
<!--MAX_FILE_SIZE必须在所有的input之前,以后要是想用上传表单,可以在form之后就写隐藏的input-->
<input type="hidden" name="MAX_FILE_SIZE" value=""/>
上传的文件:
<input type="file" name="userfile"/>
<input type="submit" name="sub_button" value="上传文件的提交按钮"/>
</form>
로그인 후 복사

 좋아, 이 코드 조각을 분석해 봅시다.

 위 enctype은 데이터가 서버로 전송될 때 사용되는 인코딩 형식을 지정합니다. 세 가지 값을 가집니다:

 MAX_FILE_SIZE 숨겨진 필드(단위는 바이트)는 파일 입력 필드 앞에 배치되어야 하며 해당 값은 파일의 최대 크기입니다. 이는 브라우저에 대한 제안이며, PHP도 이를 확인합니다. 이 장벽은 브라우저 측에서 우회될 수 있으므로 이를 사용하여 대용량 파일을 차단할 것으로 기대하지 마십시오. 그러나 최대 파일 크기는 php.ini의 post_max_size=(number)M으로 제한됩니다. 하지만 이 항목을 추가하는 것이 더 좋습니다. 그러면 사용자가 대용량 파일 업로드실패를 발견하기 위해 대용량 파일을 업로드하는 데 시간을 소비하는 문제를 피할 수 있습니다.  사용자가 파일 양식을 제출하면 서버가 데이터를 수락할 수 있습니다. PHP에는

파일 처리

를 위한 전역 변수 $_FILES가 있습니다. 업로드 필드 이름은 userfile이라고 가정합니다(필드에서 임의로 변경할 수 있음).  $_FILES['userfile']['name'] 클라이언트 파일의 원래 이름입니다.

 $_FILES['userfile']['type'] 파일의 MIME 유형입니다. PHP 측에서는 확인되지 않으므로 이 값이 아직 존재하지 않을 수 있습니다.

 $_FILES['userfile']['size'] 업로드된 파일의 크기(바이트)입니다.
          $_FILES['userfile']['tmp_name'] 파일 업로드 후 서버 측에 저장되는 임시 파일 이름입니다.
 $_FILES['userfile']['error'] 파일 업로드와 관련된 오류 코드입니다. 업로드가 성공하면 값은 0이 됩니다. 파일이 업로드된 후에는 기본적으로 서버의 기본 임시 디렉터리에 저장되며, php.ini의 upload_tmp_dir은 다른 경로로 설정됩니다.

  여기서는 move_uploaded_file() 함수에 대해 이야기해야 합니다.

이 함수는 file로 지정된 파일이 합법적인 업로드 파일(즉, PHP의 HTTP POST 업로드 메커니즘을 통해 업로드됨)인지 확인하고 확인합니다. 파일이 합법적이면 newloc에 지정된 파일로 이동됩니다.

 파일이 합법적으로 업로드된 파일이 아닌 경우 아무런 작업도 수행되지 않으며 move_uploaded_file()은 false를 반환합니다.

  파일이 합법적으로 업로드된 파일이지만 어떤 이유로 이동할 수 없는 경우 아무 작업도 발생하지 않고 move_uploaded_file()이 false를 반환하고 경고가 발생합니다.

업로드된 파일로 인해 해당 콘텐츠가 이 시스템의 사용자나 다른 사용자에게 표시될 수 있는 경우 이러한 종류의 확인이 특히 중요합니다.

 다음은 PHP로 파일을 업로드하는 예입니다.

<b>上传文件处理</b>
<?php
if (isset($_FILES[&#39;userfile&#39;])) {
$uploaddir = &#39;upload/&#39;;
$uploadfile = $uploaddir . basename($_FILES[&#39;userfile&#39;][&#39;name&#39;]);
echo &#39;<pre class="brush:php;toolbar:false">&#39;;
if (move_uploaded_file($_FILES[&#39;userfile&#39;][&#39;tmp_name&#39;], $uploadfile)) {
echo &#39;上传文件成功&#39;.&#39;<br>&#39;;
} else {
echo &#39;上传文件失败&#39;.&#39;<br>&#39;;
}
echo &#39;这是上传文件的一些信息:&#39; . &#39;<br>&#39;;
print_r($_FILES);
echo &#39;<pre class="brush:php;toolbar:false">&#39;;
die();
}
?>
<b>上传表单</b>
<!--表单中的enctype属,必须和以下定义保持一致-->
<form enctype="multipart/form-data" action="upload_file.php" name="upload_form" method="post">
<!--MAX_FILE_SIZE必须在所有的input之前,以后要是想用上传表单,可以在form之后就写隐藏的input-->
<input type="hidden" name="MAX_FILE_SIZE" value=""/>
上传的文件:
<input type="file" name="userfile"/>
<hr/>
<input type="submit" name="sub_button" value="上传文件的提交按钮"/>
</form>
로그인 후 복사


위 내용은 PHP에서 파일을 업로드할 때 발생하는 몇 가지 문제의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿