php複数ファイルのアップロード
PHP で単一ファイルをアップロードするプロセスを紹介しました。ただし、便宜上、複数のファイルを同時にアップロードする必要がある場合があります。複数ファイルのアップロードの原理は同じですが、データを処理する場合、アップロードされたデータを特別に処理する必要があります。
<html> <head> <meta charset="utf-8" /> <title>单文件上传</title> </head> <body> <form action="morefile.php" method="post" enctype="multipart/form-data"> <input type="file" name="file[]"> <input type="file" name="file[]"> <input type="submit" value="上传"> </form> </body> </html>
これは簡単なアップロード ページで、フォームは 2 つのファイルを同時に送信します。このページからコンテンツを送信できます。
注意:
1.input type="file" name="file[]"以前と比べて、fileの後に角括弧が追加されています
2.input type="file" name="を2つ以上記述しますfile[]"
$_FILES を使用してファイル情報を受け取り、配列を印刷および表示します:
<?php var_dump($_FILES); //打印$_FILES查看数组结构 ?>
配列の構造は次のとおりです
array (size=1) 'file' => array (size=5) 'name' => array (size=2) //文件名 0 => string 'psu.jpg' (length=7) 1 => string 'qwe.jpg' (length=7) //文件mime类型 'type' => array (size=2) 0 => string 'image/jpeg' (length=10) 1 => string 'image/jpeg' (length=10) //缓存文件 'tmp_name' => array (size=2) 0 => string 'E:\wamp\tmp\phpF6D5.tmp' (length=23) 1 => string 'E:\wamp\tmp\phpF6F5.tmp' (length=23) //文件错误信息 'error' => array (size=2) 0 => int 0 1 => int 0 //文件大小 'size' => array (size=2) 0 => int 225824 1 => int 151651
2 つのファイルが配列に格納されていることがわかります。キー名とアップロードされたファイルです。ファイルは同じです。したがって、for() ループを使用して、2 つのファイルからそれぞれ必要なデータを取得する必要があります。
2 つのファイルのデータが $_FILES に同時に保存されます。単純なループを使用して、1 つのファイルの情報を読み取り、ファイルを配置したい場所に移動する必要があります。
<?php for ($i=0; $i < count($_FILE['file']['name']); $i++) { /* 用is_uploaded_file()函数判断是上传文件 并且没有出现错 */ if(is_uploaded_file($_FILEs['file']['tmp_name'][$i]) && $_FILEs['file']['error'][$i] == 0){ if(move_uploaded_file($_FILEs['file']['tmp_name'][$i],'upload/'.$_FILE['file']['name'][$i])){ //用move_uploaded_file()函数移动文件到指定的位置并使用文件原名 echo "上传成功"; }else{ echo '上传失败'; } }else{ echo '上传失败'; } } ?>
詳細な判定プロセスについては、単一ファイルのアップロードを参照してください。ここでは基本的な判定のみが行われ、ファイル サイズや形式についての注意事項はありません。
ファイルサイズや形式は業務に応じてご自身で判断し、エラー通知を提供してください。