ホームページ  >  記事  >  毎日のプログラミング  >  PHP で複数の属性を使用して複数のファイルをアップロードし、情報を解析するにはどうすればよいですか? (写真 + ビデオ)

PHP で複数の属性を使用して複数のファイルをアップロードし、情報を解析するにはどうすればよいですか? (写真 + ビデオ)

藏色散人
藏色散人オリジナル
2018-09-17 17:35:086474ブラウズ

この記事では、HTML5 で multiple 属性 を使用して、PHP の複数ファイルのアップロードと情報解析を実装する方法を引き続き紹介します。

それでは、PHP で複数のファイルをアップロードする簡単な方法は何でしょうか? ]では、PHPで複数のファイルをアップロードする簡単な方法を簡単に紹介しましたので、必要な方は参考にしてください。

以下では、特定のコード例を使用して、PHP の multiple 属性を使用して複数のファイルのアップロードと情報の解析を実装する完全な方法を詳しく紹介します。

まず、HTML フォーム コードは次のとおりです。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="getFile.php" method="post" enctype="multipart/form-data">
 选择文件进行上传: <input type="file" name="file[]" multiple=""><br>
    <input type="submit" value="上传">
</form>
</body>
</html>

複数の画像をアップロードし、ブラウザ経由でアクセスすることを選択します。結果は次のとおりです。

PHP で複数の属性を使用して複数のファイルをアップロードし、情報を解析するにはどうすればよいですか? (写真 + ビデオ)

PHP で複数の属性を使用して複数のファイルをアップロードし、情報を解析するにはどうすればよいですか? (写真 + ビデオ)

PHP で複数の属性を使用して複数のファイルをアップロードし、情報を解析するにはどうすればよいですか? (写真 + ビデオ)## 次に、ファイルを getFile.php ファイルにアップロードします。PHP コードの例は次のとおりです。 ##

var_dump($_FILES);

This ブラウザからアクセスした結果は以下の通りです。


現時点では、次の 3 つを取得していることがわかります。上の図の次元配列。 PHP で複数の属性を使用して複数のファイルをアップロードし、情報を解析するにはどうすればよいですか? (写真 + ビデオ)

したがって、アップロードされた複数のファイルの情報を分析したい場合は、最初にアップロードされた情報を組み立てる必要があります。

完全な getFile.php コードは次のとおりです:

<?php
/**
 * 组装多文件上传信息
 */
$files = [];
function getFile()
{
    $i = 0;
    foreach ($_FILES as $file) {
        if (is_string($file[&#39;name&#39;])) {
            $files[&#39;$i&#39;] = $file;
            $i++;
        } elseif (is_array($file[&#39;name&#39;])) {
            foreach ($file[&#39;name&#39;] as $k => $v) {
                $files[$i][&#39;name&#39;] = $file[&#39;name&#39;][$k];
                $files[$i][&#39;type&#39;] = $file[&#39;type&#39;][$k];
                $files[$i][&#39;tmp_name&#39;] = $file[&#39;tmp_name&#39;][$k];
                $files[$i][&#39;error&#39;] = $file[&#39;error&#39;][$k];
                $files[$i][&#39;size&#39;] = $file[&#39;size&#39;][$k];
                $i++;
            }
        }
    }
    return $files;
}

/**
 * 文件上传
 * @param $fileInfo
 * @param string $upload
 * @param array $imagesExt
 * @return string
 */
function upload_file($fileInfo, $upload = "./upload", $imagesExt = [&#39;gif&#39;, &#39;png&#39;, &#39;jpg&#39;])
{
    $res = [];
    if ($fileInfo[&#39;error&#39;] === 0) {
        $ext = strtolower(pathinfo($fileInfo[&#39;name&#39;], PATHINFO_EXTENSION));
        if (!in_array($ext, $imagesExt)) {
            $res[&#39;mes&#39;] = "文件非法类型";
        }
        if (!is_dir($upload)) {
            mkdir($upload, 0777, true);
        }
        if ($res) {
            return $res;
        }
        $fileName = md5(uniqid(microtime(true), true)) . "." . $ext;
        $destName = $upload . "/" . $fileName;
        if (!move_uploaded_file($fileInfo[&#39;tmp_name&#39;], $destName)) {
            $res[&#39;mes&#39;] = "文件上传失败!";
        }
        $res[&#39;mes&#39;] = $fileInfo[&#39;name&#39;] . "文件上传成功!";
        $res[&#39;dest&#39;] = $destName;
        return $res;
    } else {
        switch ($fileInfo[&#39;error&#39;]) {
            case 1:
                $res[&#39;mes&#39;] = &#39;上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值&#39;;
                break;
            case 2:
                $res[&#39;mes&#39;] = &#39;上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值&#39;;
                break;
            case 3:
                $res[&#39;mes&#39;] = &#39;文件只有部分被上传&#39;;
                break;
            case 4:
                $res[&#39;mes&#39;] = &#39;没有文件被上传&#39;;
                break;
            case 6:
                $res[&#39;mes&#39;] = &#39;找不到临时文件夹&#39;;
                break;
            case 7:
                $res[&#39;mes&#39;] = &#39;文件写入失败&#39;;
                break;
        }
        return $res;
    }
}

$files = getFile();

foreach ($files as $fileInfo) {
    $res = upload_file($fileInfo);
    echo $res[&#39;mes&#39;];
    var_dump($res[&#39;dest&#39;]);
}
上記のコードでは、最初に foreach ループの判定ステートメント

を次のように渡します。アップロードされた多次元配列情報を確認します

Reorganizeを確認し、複数のファイルのアップロード情報を解析するためのupload_fileメソッドを作成します。 ここでのupload_fileメソッドについては、こちらの記事[PHPファイルのアップロード方法とその情報分析の詳細説明

]で詳しく紹介されているので、参考にしてみてください。以上がPHPで複数ファイルのアップロードと情報解析を実現する具体的な方法です。

PHP についてさらに詳しく知りたい場合は、PHP 中国語 Web サイトの PHP ビデオ チュートリアル

をご覧ください。

以上がPHP で複数の属性を使用して複数のファイルをアップロードし、情報を解析するにはどうすればよいですか? (写真 + ビデオ)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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