ホームページ  >  記事  >  バックエンド開発  >  PHPアップロードファイルの詳細な分析

PHPアップロードファイルの詳細な分析

小云云
小云云オリジナル
2018-03-15 09:55:551320ブラウズ

この記事では主に PHP アップロード ファイルの詳細な分析について説明します。これまでにも PHP アップロード ファイルに関する多くの記事を紹介しましたが、この記事が役立つことを願っています。

1.phpアップロードファイル構成php.ini構成:

(1)file_uploads=on|off:サーバー上で確認PHP スクリプトがファイルのアップロードを受け入れることができるかどうか。

(2) max_execution_time=integer : 致命的なエラーが登録されるまでにスクリプトが実行できる最大時間PHP (秒単位)。

(

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で決定します。 Unit 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

$destinationdirname(__FILE__) .DS.'uploads'.DS.$_FILES['file_img'][' name'] (例)

移動するファイルの場所を指定します: D:myWAPmyWeblearnphp_uploaduploadshm_g_img.jpg

3.phpアップロードケース: 画像ファイルのみが実行できることを指定しますアップロードする


(1) 必要なフォルダーとファイル


(2)file_unload_select.phpファイルのファイルHTML選択範囲を参照、アップロードをクリック:


enctype = " -data」不修正書き込み、そうでない場合、ファイルのアップロードは失敗します

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 ) )

Analysis:

$_FILES['file_img']['name'] : news_001_01.jpg アップロードファイル名

$_FILES ['file_img']['type' ] : 画像/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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。