4

ユーザーが自分のWebサイトにファイルをアップロードするためのフォームを使用しています。一度に複数の写真をアップロードできるようにしたいので、HTML5の「複数」属性を使用しています。

私のHTML:

<form method="post" action="save.php">
    <input type="file" name="uploads[]" multiple="multiple" />
    <input type="submit" name="submit" value="submit"/>
</form>

save.php:

<?php
  foreach ($_FILES['uploads']['name'] as $file) {
    echo $file . "<br/>";
    $file= time() . $_FILES['uploads']['name'];
    $target= UPLOADPATH . $file;
    move_uploaded_file($_FILES['uploads']['tmp_name'], $target)
    or die('error with query 2');
   }

しかし、何らかの理由でスクリプトを実行すると、未定義のインデックス:アップロードというエラーが表示されます。そして、foreach()に無効な引数が指定されているというエラー。何が間違っているのでしょうか?

ありがとう

アップデート

さて、enctype="mulitpart/form-data"作業を設定します。現在、ファイルの移動に問題があります。エラーが発生しますmove_uploaded_file() expects parameter 1 to be string, array given。私はここで何が間違っているのですか?

再度、感謝します

4

4 に答える 4

5

enctypeファイルをアップロードできるようにするには、適切なものが必要です。

<form method="post" enctype="multipart/form-data" action="save.php">
于 2012-10-19T14:49:26.003 に答える
0

このhtmlコードを試してください: <form method="post" action="save.php" enctype="multipart/form-data"> 次にPHPで:

if(isset($_FILES['uploads'])){
foreach ($_FILES['uploads']['name'] as $file) {
    echo $file . "<br/>";
    $file= time() . $_FILES['uploads']['name'];
    $target= UPLOADPATH . $file;
    move_uploaded_file($_FILES['uploads']['tmp_name'], $target)
    or die('error with query 2');
   }
} else {
   echo 'some error message!';
}
于 2012-10-19T14:50:26.460 に答える
0

そもそもファイルをアップロードするにはenctype="multipart/form-data"<form>タグが必要です。

ただし、複数のファイルをアップロードする場合、のすべてのキー$_FILES['uploads']は配列です(のように$_FILES['uploads']['name'])。

各ファイルを処理できるように、ループするときに配列キーを取得する必要があります。その他の詳細については、ドキュメントをmove_uploaded_file参照してください。

<?php
  foreach ($_FILES['uploads']['name'] as $key=>$file) {
    echo $file."<br/>";
    $file = time().$file;
    $target = UPLOADPATH.$file;
    move_uploaded_file($_FILES['uploads']['tmp_name'][$key], $target)
    or die('error with query 2');
}
于 2012-10-19T14:58:16.160 に答える
0

index.html

<form method="post" action="save.php" enctype="multipart/form-data">
    <input type="file" name="uploads[]" multiple="multiple" />
    <input type="submit" name="submit" value="Upload Image"/>
</form>

save.php

<?php    
  $file_dir  = "uploads";    
  if (isset($_POST["submit"])) {

    for ($x = 0; $x < count($_FILES['uploads']['name']); $x++) {                

      $file_name   = time() . $_FILES['uploads']['name'][$x];
      $file_tmp    = $_FILES['uploads']['tmp_name'][$x];

      /* location file save */
      $file_target = $file_dir . DIRECTORY_SEPARATOR . $file_name;

      if (move_uploaded_file($file_tmp, $file_target)) {                        
        echo "{$file_name} has been uploaded. <br />";                      
      } else {                      
        echo "Sorry, there was an error uploading {$file_name}.";   
      }                 

    }               
  }    
?>
于 2017-11-18T08:03:30.223 に答える