PHPで複数のファイルのアップロードを実装する方法

伊谢尔伦
リリース: 2023-03-11 10:48:01
オリジナル
1676 人が閲覧しました

実際、複数の ファイルのアップロード は、単一のファイルのアップロード と同様です。 まず、以前のファイル アップロード フォームのファイルは file[] に変更されます。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
    <title>upload files</title>
</head>
<body>
    <form action="upload.php" enctype="multipart/form-data" method="post">
        <input type="hidden" name="MAX_FILE_SIZE" value="100000" />
        上传文件:<input type="file" name="file[]"/><br/>
        上传文件:<input type="file" name="file[]"/><br/>
        上传文件:<input type="file" name="file[]"/><br/>    
        <input type="submit" value="上传" />
    </form>
</body>
</html>
ログイン後にコピー

アップロードでは、PHPは$_FILESを使用して次の

多次元配列

<?php  
  print_r($_FILES); 
?>
ログイン後にコピー

を表示します。単一ファイルのアップロードの原則に従って、最初に何を取得する必要があるかを考えてください。

明らかに、ファイル情報の配列を取得する必要があります。このとき取得するのは、対応するキー値が存在する多次元配列です。 、

上記の 3 つのファイルのように、対応する 3 つのファイル情報配列に分割するだけで済みます。

分割配列の構造

Array
(
    [file] => Array
        (
            [name] => Array
                (
                    [0] => 照片1.jpg
                    [1] => 照片2.jpg
                    [2] => 照片3.jpg
                )
            [type] => Array
                (
                    [0] => image/jpeg
                    [1] => image/jpeg
                    [2] => image/jpeg
                )
            [tmp_name] => Array
                (
                    [0] => F:\wamp\tmp\php36C7.tmp
                    [1] => F:\wamp\tmp\php36C8.tmp
                    [2] => F:\wamp\tmp\php36C9.tmp
                )
            [error] => Array
                (
                    [0] => 0
                    [1] => 0
                    [2] => 0
                )
            [size] => Array
                (
                    [0] => 0
                    [1] => 0
                    [2] => 0
                )
        )
)
ログイン後にコピー

以下は配列を分割して再構成するコードです

​​

Array
(
    [0] => Array
        (
            [name] => 照片1.jpg
            [type] => image/jpeg
            [tmp_name] => F:\wamp\tmp\php13C1.tmp
            [error] => 0
            [size] => 385150
        )
    [1] => Array
        (
            [name] => 照片2.jpg
            [type] => image/jpeg
            [tmp_name] => F:\wamp\tmp\php13D2.tmp
            [error] => 0
            [size] => 242043
        )
    [2] => Array
        (
            [name] => 照片3.jpg
            [type] => image/jpeg
            [tmp_name] => F:\wamp\tmp\php13D3.tmp
            [error] => 0
            [size] => 488293
        )
)
ログイン後にコピー

残りは単一のファイルをアップロードして配列を一度処理する手順を繰り返すだけです。

コードは次のとおりです:

<?php    
    //print_r($_FILES[&#39;file&#39;]);
    $arr=$_FILES[&#39;file&#39;];
    $files=array();
    for($i=0;$i<count($arr[&#39;name&#39;]);$i++){
        $files[$i][&#39;name&#39;]=$arr[&#39;name&#39;][$i];
        $files[$i][&#39;type&#39;]=$arr[&#39;type&#39;][$i];
        $files[$i][&#39;tmp_name&#39;]=$arr[&#39;tmp_name&#39;][$i];
        $files[$i][&#39;error&#39;]=$arr[&#39;error&#39;][$i];
        $files[$i][&#39;size&#39;]=$arr[&#39;size&#39;][$i];
    }
    print_r($files);
?>
ログイン後にコピー

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート