-2

はい、似たような質問が何百もあることは知っていますが、有効な答えが見つかりませんでした...問題は、複数のファイルをアップロードしたいことです...正しい方法は次のとおりです。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
</head>

<body>
<form enctype="multipart/form-data" method="post" action="?u=1">
 <input  type="file" name="myFile[]" />
 <input  type="file" name="myFile[]" />
 <input  type="file" name="myFile[]" />
<input type="submit" value="Upload!" name="submit"/>
</form>
<?
if ($_GET['u']){
foreach ($_FILES["myFile"]["error"] as $key => $error) {
 if ($error == UPLOAD_ERR_OK) {
   $tmp_name = $_FILES["myFile"]["tmp_name"][$key];
   $name = $_FILES["myFile"]["name"][$key];
   // here we move it to a directory called data
   // you can move it wherever you want
   move_uploaded_file($tmp_name, "/data/$name");
 } else {
   // an error occurred, handle it here
 }
}
}

if (!$_FILES){
    echo 'WTF?? No files sent?? There\'s a problem! Let\' hope that stack overflow will solve it!';
}
?>

</body>
</html>

出力は次のとおりです。

Notice: Undefined index: myFile in C:\xampp\htdocs\php\prova.php on line 18

Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\php\prova.php on line 18

ファイルが送信されませんか?? 問題があります!配列入力タグからアップロードされたファイルにアクセスするにはどうすればよいですか?

4

3 に答える 3

0

ファイルをアップロードする最も簡単な方法は、ファイルが 1 つしかないかのように振る舞い、他のすべてのファイルに対してこのプロセスを繰り返すことです。入力に名前を付けるだけです。複数ファイルの入力を使用することをお勧めします。

<input type="file" name="file[]" id="file" multiple>

次に、単純な for でアップロードを処理できます。

if(isset($_FILES['file']['tmp_name']))
            {
//set upload directory
                $target_dir = "uploads/";
                $num_files = count($_FILES['file']['tmp_name']);
                for($i=0; $i < $num_files;$i++)
                {
                    if(!is_uploaded_file($_FILES['file']['tmp_name'][$i]))
                    {
                        $messages[] = 'No file uploaded';
                    }
                    else
                    {
                        if(@copy($_FILES['file']['tmp_name'][$i],$target_dir.'/'.$form['name']->getData()."/".$_FILES['file']['name'][$i]))
                        {
                            $messages[] = $_FILES['file']['name'][$i].' uploaded';
                        }
                        else
                        {
                            $messages[] = 'Uploading '.$_FILES['file']['name'][$i].' Failed';
                        }
                    }
                }
            }

copy または move_uploaded_file を使用して、ファイルをディレクトリに移動できます。

于 2014-11-09T13:13:46.743 に答える
-1

コードを確認したところ、行
move_uploaded_file($tmp_name, "/data/$name");
move_uploaded_file($tmp_name, "data/$name");
[Changing absolute path to relative path] に変更するとうまくいくことがわかりました。現在、ローカルサーバーで正常に動作しています。それはあなたのためにそれを解決するはずです。

礼儀: http://forums.whirlpool.net.au/archive/788971

于 2012-06-11T11:49:43.693 に答える