Hello, all:

I thought I could convert a basic upload script into a MULTIPLE file upload by simply adding a FOREACH loop to it, but doesnt seem to do it. Not sure if I am setting it up correctly. It looks like it does recognize the array since it does give me the "There was an error uploading the file..." warning three times. Appreciate any help on this!
Here is the html form and php code ( all residing in same page):

<?


if (isset($_POST[submit])) {

$uploadArray= array();
$uploadArray[] = $_POST['uploadedfile'];
$uploadArray[] = $_POST['uploadedfile2'];
$uploadArray[] = $_POST['uploadedfile3'];

foreach($uploadArray as $file) {


$target_path = "upload/";

$target_path = $target_path . basename( $_FILES['$file']['name']); 

if(move_uploaded_file($_FILES['$file']['tmp_name'], $target_path)) {
    echo "The file ".  basename( $_FILES['$file']['name']). 
    " has been uploaded";
} else{
    echo "There was an error uploading the file, please try again!";
}
}

}

?>


<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Untitled Document</title>
</head>

<body>


<form enctype="multipart/form-data" action="upload-simple.php" method="POST">
  <p>
    <input type="hidden" name="MAX_FILE_SIZE" value="100000" />
    Choose a file to upload: 
  <input name="uploadedfile" type="file" />
  </p>
  <p>Choose a file to upload:
    <input name="uploadedfile2" type="file" />
  </p>
  <p>Choose a file to upload:
    <input name="uploadedfile3" type="file" />    
    <br />
    <input name="submit" type="submit" id="submit" value="submit" />
      </p>
</form>

</body>
</html>

Your $file variable will not be parsed inside single quotes. Either remove the single quotes, or replace them with double quotes.

Wrong: $_FILES

Correct: $_FILES["$file"]
Correct: $_FILES[$file]

This article has been dead for over six months. Start a new discussion instead.