ホームページ >バックエンド開発 >PHPの問題 >PHPでファイルをアップロードするにはどうすればよいですか?読めばわかる!

PHPでファイルをアップロードするにはどうすればよいですか?読めばわかる!

WBOY
WBOYオリジナル
2021-10-19 13:48:503451ブラウズ

前回の記事では『PHPでファイル属性を取得・検出する方法は? (概要共有) 」では、PHP におけるファイル属性の知識を詳しく紹介しています。この記事では、PHP でファイルをアップロードする方法を見てみましょう。みんなが助けてくれることを願っています!

PHPでファイルをアップロードするにはどうすればよいですか?読めばわかる!

日常生活では、友達のサークルに写真をアップロードしたり、電子メールに添付ファイルを送信したりするなど、ファイルをアップロードする手順に遭遇することがよくあります。PHP コードでは、 、ファイルをアップロードしたい場合はどうすればよいですか?ファイルのアップロードは PHP ファイル システムの非常に重要な機能の 1 つであるため、そのような機能を実装する方法を見てみましょう。

設定php.ini

ファイルアップロード機能を使用するには、まずphpを設定する必要があります.ini 内のパラメータを適切に設定します。まず、php.ini ファイルを見つける方法を見てみましょう。例は次のとおりです。

最初に入力します:

<?php
phpinfo();
?>

出力結果:

PHPでファイルをアップロードするにはどうすればよいですか?読めばわかる!

上記より結果の「ロードされた構成ファイル」列に php.ini の特定のパスが表示されます。これにより、php.ini ファイルが見つかりました。

php.ini にファイルが多すぎます。Ctrl F を使用して、関連する構成項目を検索できます。次に、設定する必要があるパラメータは次のとおりです:

  • file_uploads: on はサーバーがファイル アップロード機能を有効にしていることを意味し、off の場合はそれを意味します。サーバーがファイルのアップロード機能をオフにしていることを示します。

  • upload_tmp_dir: ファイルをアップロードするための一時ディレクトリ。ファイルが正常にアップロードされる前に、ファイルはまずサーバー側の一時ディレクトリに保存されます。設定されていない場合は、システムのデフォルト ディレクトリになります。

  • upload_max_filesize: サーバーがアップロードできるファイルの最大サイズ (MB 単位)。

  • max_execution_time: PHP でコマンドを実行できる最大時間 (秒単位)。

  • memory_limit: PHP のコマンドによって割り当てられるメモリ空間。単位は MB です。

注意する必要があるのは、設定の完了後、設定を有効にしたい場合は、設定されたパラメータを有効にするために Apache サーバーを再起動する必要があることです。 。

事前定義変数 $_FILES

php.ini を設定した後、事前定義変数 $_FILES を使用してアップロードする必要があります。制限と判断。 $_FILES 変数には、アップロードされたファイルに関連する情報が保存されます。保存する必要がある情報は次のとおりです:

  • $_FILES[filename][name]:アップロードしたファイルを保存します ファイル名

  • $_FILES[ファイル名][サイズ] : アップロードしたファイルのサイズを保存します

  • $ _FILES[filename][tmp_name] : アップロードしたファイルの一時的な名前を保存します

  • ##$_FILES[filename][type] : アップロードされたファイルの種類を保存

  • $_FILES[filename][error] : アップロードされたファイルの結果のコード名を保存します。0 は成功を意味します

us 事前定義変数 $_FILES を HTML と組み合わせて使用​​すると、次のような例を作成できます。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>PHP文件上传</title>
</head>
<body>
    <form action="" method="post" enctype="multipart/form-data">
        <input type="file" name="upfile">
        <input type="submit" value="上传">
    </form>
</body>
</html>
<?php
    if(!empty($_FILES)){
        foreach ($_FILES[&#39;upfile&#39;] as $key => $value) {
            echo $key.&#39;=>&#39;.$value.&#39;<br>&#39;;
        }
    }
?>

プログラムを実行した後、フォームに従ってアップロードするファイルを選択します。 test1.txt を例にとると、出力結果は次のようになります:

PHPでファイルをアップロードするにはどうすればよいですか?読めばわかる!

保存された情報によると、ファイルの関連情報を取得できます:

ファイル名は test1.txt; アップロードされたファイルの種類は text/plain; アップロードされたファイルの一時ファイル名は保存されます。名前は C:\Windows\phpD16F.tmp; 0 はファイルが保存されたことを意味しますアップロードに成功しました。ファイル サイズは 5 です。

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

上記のコードを通じて、アップロードするファイルの基本情報を取得しました。次に、使用する必要があります。

move_uploaded_file() アップロードを実装する関数。その主な機能は、アップロードしたばかりのファイルを新しい場所に移動することです。構文形式は次のとおりです:

move_uploaded_file(string $filename, string $destination)

ここで、

$filenameb は、アップロードされたファイルのファイル名を表します。このファイル名は、アップロードされたファイルの元のファイル名ではなく、パススルーされます。前の手順の $_FILES tmp_name; $destinationb で取得したファイル名は、アップロードされたファイルの移動先を示します。

実行関数は、実行が成功すると TRUE を返し、失敗すると FALSE を返します。

次に例を見てみましょう:

先ほどの test1.txt ファイルを、ルート ディレクトリに作成した phptest という名前のフォルダーにアップロードします。操作は次のとおりです。 #
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>PHP文件上传</title>
</head>
<body>
    <form action="" method="post" enctype="multipart/form-data">
        <input type="file" name="upfile">
        <input type="submit" value="上传">
    </form>
</body>
</html>
<?php
    if(!empty($_FILES)){
        $tmpname   = $_FILES[&#39;upfile&#39;][&#39;tmp_name&#39;];     // 临时文件名称
        $name      = $_FILES[&#39;upfile&#39;][&#39;name&#39;];         // 文件的原名称
        $path      = &#39;./phptest&#39;;                       // 上传目录
        $file_name = date(&#39;YmdHis&#39;).rand(100,999).$name;// 避免文件重名,更改文件名称
        if(move_uploaded_file($tmpname, $path.&#39;/&#39;.$file_name)){
            echo $name." 上传成功!";
        }else{
            echo $name." 上传失败!";
        }
    }
?>

フォームに従ってファイルをアップロードすると、出力結果は次のようになります。

如此则表示我想要上传的test2.txt已经上传到我需要的目录中了:

PHPでファイルをアップロードするにはどうすればよいですか?読めばわかる!

多文件上传

通过上述示例已经了解了单文件上传的过程,但是在日常使用中经常会用到的是多文件上传,那多文件上传应该怎么操作呢?

示例如下:

还和上面的示例一样,上传多个文件到我在根目录里创建的phptest文件夹里

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>PHP文件上传</title>
</head>
<body>
    <form action="" method="post" enctype="multipart/form-data">
        <input type="file" name="upfile[]"><br>
        <input type="file" name="upfile[]"><br>
        <input type="file" name="upfile[]"><br>
        <input type="submit" value="上传">
    </form>
</body>
</html>
<?php
    if(!empty($_FILES)){
        $tmpname = $_FILES[&#39;upfile&#39;][&#39;tmp_name&#39;];
        $name = $_FILES[&#39;upfile&#39;][&#39;name&#39;];
        $path = &#39;./phptest&#39;;
        for ($i=0; $i < count($tmpname); $i++) {
            $file_name = date(&#39;YmdHis&#39;).rand(100,999).$name[$i];
            if(move_uploaded_file($tmpname[$i], $path.&#39;/&#39;.$file_name)){
                echo $name[$i].&#39; 上传成功!<br>&#39;;
            }else{
                echo $name[$i].&#39; 上传失败!<br>&#39;;
            }
        }
    }
?>

输出结果:

PHPでファイルをアップロードするにはどうすればよいですか?読めばわかる!

如此结果显示,多个文件已经上传到我的文件夹里了:

PHPでファイルをアップロードするにはどうすればよいですか?読めばわかる!

推荐学习:《PHP视频教程

以上がPHPでファイルをアップロードするにはどうすればよいですか?読めばわかる!の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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