この記事では、PHP で複数のファイルをアップロードするためのサンプルコードに関する関連情報を主に紹介します。興味のある方は参考にしてください。
複数のファイルをアップロードする
1. 複数のファイル情報を操作する前に、ファイル情報を構築し、buildInfo関数を使用して3次元配列をファイル操作に便利な2次元配列に変換する必要があります。
function buildInfo(){ $i = 0; foreach ($_FILES as $v){ //判断是否是单文件 if(is_string($v['name'])){ $files[$i] = $v; $i++; }else{ //多文件 foreach ($v['name'] as $key => $value){ $files[$i]['name'] = $value; $files[$i]['size'] = $v['size'][$key]; $files[$i]['tmp_name'] = $v['tmp_name'][$key]; $files[$i]['type'] = $v['type'][$key]; $files[$i]['error'] = $v['error'][$key]; $i++; } } } return $files; }
単一ファイルか複数ファイルかの判断は、ファイル配列の種類、単一ファイル(二次元配列)、複数ファイル(三次元配列)によって決まります。
2. ファイルアップロード関数とパラメータ
コードをコピーします コードは次のとおりです:
function UploadFiles($path = "uploads", $allowExt = array("jpg", "gif", "png" 、 "wbmp")、$maxSize = 1048576、$imgFlag = true)
パス、保存ディレクトリ。 allowExt、許可される拡張子の配列。 maxSizeアップロード ファイルの最大サイズ。 imgFlag、画像ファイル識別子。
3. ファイルが保存されているディレクトリが存在するかどうかを確認します
if(!file_exists($path)){ mkdir($path, 0777, true); }
4. 構築されたファイル情報を渡してファイルに保存します
$i = 0; $files = buildInfo();
5.
foreach ($files as $file){ if($file['error'] == UPLOAD_ERR_OK){ }else{ switch ($file['error']){ case 1: $mes = "超过配置文件上传文件大小"; break; case 2: $mes = "超过了表单设置"; break; case 3: $mes = "文件部分被上传"; break; case 4: $mes = "没有文件上传"; break; case 6: $mes = "没找到临时目录"; break; case 7: $mes = "文件不可写"; break; case 8: $mes = "由于PHP的扩展程序中断了文件上传"; break; }
if($file['error'] == UPLOAD_ERR_OK){ $ext = getExt($file['name']); if(!in_array($ext, $allowExt)){ exit("非法文件类型"); }
if($imgFlag){ if(!getimagesize($file['tmp_name'])){ exit("不是真的图片类型"); } }
9。ファイルが post を通じてアップロードされたかどうかを確認します
if($file['size'] > $maxSize){ exit("文件过大"); }
10. ファイルの名前を変更し (一意で重複しない)、ターゲット ディレクトリに保存します
if(!is_uploaded_file($file[‘tmp_name'])){ exit(“文件不是通过HTTP POST上传”); }
ファイル情報配列の名前を書き換えます。変数 file['error'] と file['tmp_name'] を削除します。最後に、正常にアップロードされたファイルをuploadedFiles配列に保存します。
以上がこの記事の全内容です、皆様の学習のお役に立てれば幸いです。複数のファイルをアップロードする
max_file_uploads制限の問題phpのmax_file_uploads制限の問題の解決策、複数の写真のサンプルコード以上がPHPで複数のファイルをアップロードする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。