>  기사  >  백엔드 개발  >  PHP 업로드 파일에 대한 심층 분석

PHP 업로드 파일에 대한 심층 분석

小云云
小云云원래의
2018-03-15 09:55:551330검색

이 기사는 주로 PHP 업로드 파일에 대한 심층 분석을 공유합니다. 또한 이전에도 PHP 업로드 파일에 대한 많은 기사를 공유했습니다. 이 기사가 도움이 되기를 바랍니다.

1.php파일 구성 업로드 php.ini구성:

(1)file_uploads=on|off:Con 서버에 확고한 PHP 스크립트가 파일 업로드를 허용할 수 있는지 여부입니다.

(2) max_execution_time=integer : 치명적인 오류를 등록하기 전에 스크립트가 실행될 수 있는 최대 시간(초)입니다. (

3

)

memory_limit=integer

: 스크립트가 할당할 수 있는 최대 메모리를 MB 단위로 설정합니다. 이렇게 하면 런어웨이 스크립트가 서버 메모리를 독점하는 것을 방지할 수 있습니다. (4)

upload_max_filesize=integer

: 최대 업로드 파일 크기를

MB

단위로 설정하세요. 이 지시문은 post_max_size보다 작아야 합니다 . (

5

)upload_tmp_dir=string :

업로드된 파일을 처리하기 전에 서버의 임시 위치에 저장해야 한다고 설정하고, 파일이 다음 위치로 이동될 때까지

최종 목적지. (6)

post_max_size=integer

:

POST

메소드를 통해 허용할 수 있는 메시지의 최대 크기를 MB 단위로 결정합니다. 유닛 2.php관련 메소드 업로드

(1)bool is_uploaded_file(string $filename)

정의: is_uploaded_file() 함수는 지정된 파일이 전달되는지 여부를 결정합니다. HTTP POST 업로드됨

매개변수 $filename : $_FILES['file_img']['tmp_name'](예:)

확인할 파일을 지정합니다. C:WindowsTempphp9 632.tmp

(2)bool move_uploaded_file ( string $filename , string $destination )

정의: move_uploaded_file () 기능은 이동 파일을 새 위치로 업로드합니다 일반 is_uploaded+_file() 메소드

매개변수 $filename: $_FILES['file_img']['tmp_name'](예:)

은 다음을 지정합니다. 이동할 파일 : C:WindowsTempphp9632.tmp

.DS.'uploads'.DS.$_FILES['file_img']['name'] (예) 이동할 파일 위치 지정:

D:myWAPmyWeblearnphp_uploaduploadshm_g_img.jpg3.php업로드 사례: 이미지 파일만 업로드할 수 있도록 지정

(
1

) 필요한 폴더 및 파일

(2)file_unload_select.php 파일 HTML선택 항목 찾아보기, 업로드 클릭:


enctype = "multipart/form - 데이터" 不 고정됨 그렇지 않으면 파일 업로드가 실패합니다

action = "url"

method = "post" 일반적인 업로드는 post


(3 ) upload.php 파일은 업로드된 파일을 처리하는 데 사용됩니다. 업로드 파일 형식을 결정하고 파일을 서버의 지정된 디렉터리로 이동합니다:

//接收上传文件
print_r($_FILES);
define('DS',DIRECTORY_SEPARATOR);


//判断当前上传的文件是否为图片
$img_type_arr = array('image/png','image/jpeg','image/jpeg');

//for循环遍历数组 -- 第一方法判断是否为数组中的子项
for($i=0;$i<count($img_type_arr);$i++)
{
       if($img_type_arr[$i] != $_FILES[&#39;file_img&#39;][&#39;type&#39;] && ($i == count($img_type_arr)-1) )
       {
                echo ""
                exit;
       }
}



//数组方法array_in() -- 第二方法判断是否为数组中的子项
if(!is_uploaded_file($_FILES[&#39;file_img&#39;][&#39;tmp_name&#39;]))
{
      //如果临时文件不存在,则说明没有上传到临时文件夹
      echo  &#39;上传到临时文件夹失败&#39;;
}
else
{

   //echo &#39;上传到临时文件夹成功&#39;;
   $img_path = dirname(__FILE__).DS.&#39;uploads&#39;.DS.$_FILES[&#39;file_img&#39;][&#39;name&#39;];

   //echo $img_path;

   //进行移动文件到服务器地址
   if(@move_uploaded_file($_FILES[&#39;file_img&#39;][&#39;tmp_name&#39;],$img_path))
   {
        //显示图片
        echo "<img src=".$img_path." />"
   }
   else
   {
        cho &#39;移动文件失败&#39;;

   }
}


(4 ) show_image .php 은 이미지 파일 경로를 받아 성공적으로 업로드된 이미지를 표시하는 데 사용됩니다.

$img_path = $_GET[&#39;url&#39;];

echo "";

(5) 업로드의 핵심은 $의 하위 매개변수를 사용하는 것입니다. _FILES 업로드 및 판단 완료 :

Array ( [file_img] => Array ( [name] => news_001_01.jpg [type] => image/jpeg 
[tmp_name] => C:\Windows\Temp\php504D.tmp [error] => 0 [size] => 158360 ) )

분석:

$_FILES['file_img']['name'] : news_001_01.jpg 업로드 파일 이름

$_FILES ['file_img']['type' ] : Image/jpeg 업로드된 파일의 종류

$_FILES['file_img']['tmp_name'] : C:WindowsTempphp504D.tmp 파일의 저장 경로 업로드된 파일의 임시 파일

$_FILES[' file_img']['error '] : 0 , 1, 2, 3, 4

        0 -> 파일 업로드가 성공했음을 나타냅니다.

  1 -       업로드된 파일의 크기가 합의된 값을 초과했음을 나타냅니다(PHP.ini 지정)

2 -> 은 업로드된 파일의 크기가 합의된 값(HTML 양식에 지정된 값)을 초과한다는 의미입니다.

3 -> 은 파일이 부분적으로만 업로드되었음을 의미합니다.

4 -> 은 모든 파일이 업로드되지 않았음을 의미합니다.

관련 권장 사항:

네이티브 JS 업로드 대용량 파일 표시 진행률 표시줄 php 업로드 파일 코드

php 업로드 파일 코드 구현 네이티브 JS 업로드 대용량 파일 표시 진행 바 예시

php 파일 업로드 간단한 코드

위 내용은 PHP 업로드 파일에 대한 심층 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.