ホームページ  >  記事  >  バックエンド開発  >  PHP の単一ファイルと複数ファイルのアップロードの分析例

PHP の単一ファイルと複数ファイルのアップロードの分析例

小云云
小云云オリジナル
2017-12-14 09:37:591380ブラウズ

この記事では主に、PHP における単一ファイルのアップロードと複数ファイルのアップロードに関するコードの詳細な分析と問題の解決策を説明します。参考になれば幸いです。

$_FILES が空の配列になるのはどのような場合ですか?

フォーム送信の enctype が php.ini 設定ファイルの multipart/form-data と等しくない場合、 file_uploads = Off で、アップロードされたファイルのサイズ > php.ini 設定ファイルで設定された最大アップロード サイズ

$_FILES が表示される 配列が空の場合、上記の問題が発生する可能性があるため、修正する必要があります。

ファイルを選択せず​​にすぐに「アップロードボタン」をクリックすると、$_FILES 要素の各属性は空の文字列となり、エラー属性は 4 になります

単一ファイルのアップロード

$ _FILESデータ構造

array(
  'filename' => array(
    'name' => 'xxx.png',
    'type' => 'image/png',
    'size' => 2548863,
    'tmp_name' => '/img/sdsdsd.png',
    'error' => 0
  )
)

単一ファイルまたは複数ファイルアップロードのどちらであっても、name / size / type / tmp_name / error の 5 つの固定属性があります

複数ファイルアップロード

単一ファイルアップロードと比較して、複数ファイルアップロードは次のとおりです。フロントエンドの 2 つのマルチファイル アップロード フォームははるかに複雑です

//name相同
<form method="post" enctype="multipart/form-data">
  <input type="file" name="wt[]"/>
  <input type="file" name="wt[]"/>
  <input type="submit" value="提交"/>
</form>

//name不同(简单点)
<form method="post" enctype="multipart/form-data">
  <input type="file" name="wt"/>
  <input type="file" name="mmt"/>
  <input type="submit" value="提交"/>
</form>

バックエンドの $_FILES の対応するデータ構造は異なります

//name相同
array (size=1)
 'wt' => 
  array (size=5)
   'name' => 
    array (size=2)
     0 => string '新建文本文档 (2).txt' (length=26)
     1 => string '新建文本文档.txt' (length=22)
   'type' => 
    array (size=2)
     0 => string 'text/plain' (length=10)
     1 => string 'text/plain' (length=10)
   'tmp_name' => 
    array (size=2)
     0 => string 'C:\Windows\php1D64.tmp' (length=22)
     1 => string 'C:\Windows\php1D65.tmp' (length=22)
   'error' => 
    array (size=2)
     0 => int 0
     1 => int 0
   'size' => 
    array (size=2)
     0 => int 0
     1 => int 1820

//name不同(简单点)
array (size=2)
 'wt' => 
  array (size=5)
   'name' => string '新建文本文档 (2).txt' (length=26)
   'type' => string 'text/plain' (length=10)
   'tmp_name' => string 'C:\Windows\php39C7.tmp' (length=22)
   'error' => int 0
   'size' => int 0
 'mmt' => 
  array (size=5)
   'name' => string '新建文本文档.txt' (length=22)
   'type' => string 'text/plain' (length=10)
   'tmp_name' => string 'C:\Windows\php39D8.tmp' (length=22)
   'error' => int 0
   'size' => int 1820

フィールド エラーの目的

値: 1 アップロードされたファイルは、値はphp.iniのupload_max_filesizeオプションによって制限されます。

値: 2 アップロードされたファイルのサイズが、HTML フォームの MAX_FILE_SIZE オプションで指定された値を超えています。

値: 3 ファイルの一部のみがアップロードされました。

値: 4 ファイルはアップロードされませんでした。値: 5 アップロードされたファイルのサイズは 0 です。

関連する推奨事項:

PHP ファイルのアップロード クラス Sharing_php の例

複数のファイルのアップロードを実装するための PHP のメソッド

PHP の実装を説明する例共通ファイルアップロードクラス

以上がPHP の単一ファイルと複数ファイルのアップロードの分析例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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