Ik heb een bestaand script aangepast zodat er een map naam aangevraagd wordt. Deze map wordt aangemaakt en het is de bedoeling dat daar de fotos dan inkomen. De map wordt wel aangemaakt maar de fotos worden niet naar die nieuwe map geupload, ze gaan echter naar de $path. Ik heb dus het vermoeden dat de strings $path en $plek niet aan elkaar gaan bij $upload_directory.

Ook staat er deze warning:
Warning: mkdir(/home/strato/www/he/www.***.nl/htdocs/fotoalbum/) [function.mkdir]: File exists in /mnt/web4/53/64/51542364/htdocs/fotoalbum/Upload.php on line 9

wat is hier tegen te doen?

<?php

   //configuration settings
   //you can change the upload directory to any existing directory
   $plek = $_POST['album'];
   $path = $_SERVER['DOCUMENT_ROOT'].'/fotoalbum/';
   
$upload_directory = $path.$plek;
   mkdir($path.$plek,0777);

   
   //change the maximum number of uploads
   $max_uploads = 20;



   if ($_SERVER['REQUEST_METHOD'] == 'POST')
   {
      //create file fields to select the files you would like to upload
      if ($_POST['files'])
      {
         printf('<form method="post" action="%s" enctype="multipart/form-data">', $_SERVER['PHP_SELF']);
         //create list with the file fields
         for ($i = 1; $i <= $_POST['files']; $i++)
         {
            printf('<input type="file" name="file_%s" size="100"><br />', $i);
         }
         printf('<input type="button" onclick="javascript: history.back(-1);" value="Cancel">');
         printf('<input type="submit" value="Upload files">');
         printf('<input type="hidden" name="history_files" value="%s">', $_POST['files']);
         printf('</form>');
      }
      else
      {
         //upload all files and create report
         printf('<h3>Result report:</h3>');
         printf('Upload to: %s<br /><br />', $upload_directory);
         printf('<table border="1">');
         for ($i = 1; $i <= $_POST['history_files']; $i++)
         {
            $tmp_filename = $_FILES['file_'.$i]['tmp_name'];
            $filename = $_FILES['file_'.$i]['name'];
            if (move_uploaded_file($tmp_filename, $upload_directory.'/'.$filename))
            {
               $status = 'Done...';
            }
            else
            {
               $status = 'Failure!';
            }
            printf('<tr><td>%s</td><td>%s</td><td>%s</td></tr>', $i, ($filename)?$filename:'&nbsp;', $status);
         }
         printf('</table>');
      }
   }
   else
   {
      printf('<form method="post" action="%s">', $_SERVER['PHP_SELF']);
      printf('Van wie zijn de fotos?');
      printf('<input type="text" name="album">');
      printf('Number of files to upload: ');
      printf('<select name="files">');
      //create list with numbers
      for ($i = 1; $i <= $max_uploads; $i++)
      {
         printf('<option value="%1$s">%1$s', $i);
      }
      printf('</select> ');
      printf('<input type="submit" value="Create fields">');
      printf('</form>');
   }

?>

<?php
    $upload_directory = $path.$plek;
   mkdir($path.$plek,0777);
?>


Vervangen door :


<?php
    $upload_directory = $path."".$plek;
    if (!is_dir($upload_directory))
    {
       mkdir($upload_directory,0777);
    }
?>


Hiermee controleer of je de directory bestaat, en als dit niet zo is dan word de dir aangemaakt. Anders gaat hij door.

Verder moet je even $path checken op de volgende manier :


<?php
    if (substr($path,-1) != "/")
    {
        $path .= "/" ;
    }
    
    if (substr($plek,-1) != "/")
    {
        $plek .= "/" ;
    }
?>

Bovenstaand om te voorkomen dat je
"mapbestand.jpg" constructie zchtige dingen krijgt

Nu is dit voor path niet extreem belangrijk maar voor $plek wel. Dit omdat het variabel is. Je moet er in princiepe vanuitgaan dat een gebruiker niet weet dat er een / achter de mapnaam moet.

En tot slot plak ik altijd op deze manier aan elkaar :

<?php
    $upload_directory = $path."".$plek
?>


Hopelijk ben je zo voldoende geholpen :)
Bedankt voor je snelle reactie!

De warning is idd weg maar de bestanden worden nog steeds in $path gezet en niet in $path."".$plek
Zet eens op de 2de regel van je script :

error_reporting(E_ALL)
Alweer zo'n snelle reactie, heerlijk. Alleen ik moest tussendoor even een examen maken.

Ik heb gedaan wat je zei, het script zegt nu:

Parse error: syntax error, unexpected T_VARIABLE in /mnt/web4/53/64/51542364/htdocs/fotoalbum/upload.php on line 5
En dan geef je uiteraard ook even de bijbehorende code. Regel 3 t/m 5 is zat.
Oh ja natuurlijk hier zijn ze

$plek = $_POST['album'];


regel 3 en 4 zijn commentaar.
Regel 1 t/m 7 dan maar......
1 t/m 15 ook goed?


<?php
error_reporting(E_ALL)
   //configuration settings
   //you can change the upload directory to any existing directory
   $plek = $_POST['album'];
   $path = $_SERVER['DOCUMENT_ROOT'].'/fotoalbum/';
       if (substr($path,-1) != "/")
    {
        $path .= "/" ;
    }
$upload_directory = $path."".$plek;
    if (!is_dir($upload_directory))
    {
       mkdir($path.$plek,0777);
    }
een punt komma op regel 2:P

En ja, regel 1 t/m 15 is ook goed, het gaat er gewoon om dat niet onnodig hele lappe codes worden gepost.
ah ja ook handig. Nu krijg ik deze melding:

Notice: Undefined index: album in /mnt/web4/53/64/51542364/htdocs/fotoalbum/upload.php on line 5

Oh ja de rest van de code staat nog in het eerste bericht. Hier wordt album in het leven geroepen zeg maar.

Reageren