doelmap voor uploads bepalen

Status
Niet open voor verdere reacties.

klaaslievens

Gebruiker
Lid geworden
13 okt 2006
Berichten
57
Via een script wil ik de eigenaar van een site de mogelijkheid documenten te uploaden naar de juiste doelmap (verschillende talen). Via een <form> selecteert hij de juiste taal, waarna hij het eigenlijke upload-formulier krijgt. Dit upload-script leest eerst uit wat de doelmap is. Als ik het script test, krijg ik altijd de melding dat het gelukt is, maar als ik in de doelmap ga kijken, staat er niks. Het document wordt wel geüpload naar dezelfde directory als waarin het uploadscript staat.

Nochtans, als ik de $doelmap echo, krijg ik wel de juiste map te zien. Iemand een idee waar het probleem ligt? Het script is gebaseerd op iets wat ik via het web gevonden heb.

Formulier om doelmap te kiezen:

PHP:
<form method="post" action="downloads_2.php">
<select name="doelmap" size="4" onChange="this.form.submit();">
	<option value="nederlands">Nederlands</option>
	<option value="frans">Frans</option>
	<option value="engels">Engels</option>
	<option value="afbeeldingen">Afbeeldingen</option>
</select>
</form>

Uploadscript:
PHP:
<?php 
$doelmap=$_POST['doelmap'];

switch($doelmap){
	case nederlands:
		$map = "../files/downloads_doc/nedl/";
		break;
	case frans:
		$map = "../files/downloads_doc/fr/";
		break;
	case engels:
		$map = "../files/downloads_doc/eng/";
		break;
	case afbeeldingen:
		$map = "../files/downloads_doc/foto/";
		break;
		}

$max = "10000000";
$ext = "jpg JPG gif GIF png PNG tiff TIFF tif TIF PDF pdf txt TXT doc DOC";


if ($Uploaden){


if (!$bestand)
print ("Geef een bestand op!");
else{

//Bestandsnaam opvragen
$bestand2 = explode ("\\", $bestand_name);
$laatste = count($bestand2) - 1;
$bestand2 = "$bestand2[$laatste]";

//extensie van bestand opvragen
$bestand3 = explode(".", $bestand2);
$laatste = count($bestand3) - 1;
$bestand3 = "$bestand3[$laatste]";
$bestand3 = strtolower($bestand3);

//toegestane extensies opvragen

$ext = strtolower($ext);
$ext = explode(" ", $ext);
$aantal = count($ext);

for ($tel = 0;$tel < $aantal; $tel++){
if ($bestand3 == $ext[$tel]){
$extfout = "nee";
}



}

if (!$extfout){
print ("<font color='#FF0000'>Het bestand \"$bestand2\" kan niet worden geupload.</font>");
}
else
{
if ($bestand_size > $max)
print ("<font color='#FF0000'>Het bestand \"$bestand2\" is groter dan $max bytes!</font>");
else
{

//opslaan van het bestand
copy($bestand, "$map$bestand2");
print ("<font color='#66FF00'>Het bestand \"$bestand2\" is met succes geupload!</font><br>");
}

}

}
}


// upload formulier
print ("<form method=post action=downloads_2.php enctype=multipart/form-data>
<h3>Upload foto: </h3><br>
<p>Bestemming: ".$map."</p>
<input type=file name=bestand><br><br>
<input type=submit name=Uploaden value=Uploaden></form>");

?>
 
Probeer dit eens:

PHP:
print ("<form method=post action=downloads_2.php enctype=multipart/form-data> 
<h3>Upload foto: </h3><br> 
<p>Bestemming: ".$map."</p> 
<input type=file name=bestand><br><br> 
<input type=hidden name=doelmap value=\"$map\">
<input type=submit name=Uploaden value=Uploaden></form>");
 
Laatst bewerkt:
Dank je, Jeroen, voor je hulp, maar dit had ik intussen ook geprobeerd. Zonder resultaat trouwens...



Nog andere suggesties?

Bedankt!
 
Sorry, ik had een syntax fout gemaakt in mijn vorige bericht, die heb ik even aangepast. werkt het zo ook niet?
 
Verander ook dit even in je script:

PHP:
//opslaan van het bestand 
if(copy($bestand, "$map$bestand2")){
print ("<font color='#66FF00'>Het bestand \"$bestand2\" is met succes geupload!</font><br>");
} else {
print ("<font color='#FF0000'>Het bestand \"$bestand2\" kan niet worden geupload.</font><br>");
}
 
Neen, werkt nog niet. Ik had de fout gezien en veranderd als volgt:

PHP:
<input type=text name=doelmap value=".$map.">

Net jouw versie geprobeerd, maar ook zonder succes...
 
Nein, ik had die laatste opmerking niet gezien, maar het is gelukkig ook niet meer nodig!!

Blijkbaar conflicteerden de variabelen om de een of andere reden. Ik heb ze hernoemd, en nu marcheert het wel.

- uit het eerste form haal ik $bestemming
- $bestemming bepaalt via de switch de $map
- in het uploadform zelf geef ik het inputveld de naam doelmap..
- die ik dan opnieuw aan het begin van het uploadscript oproep en er $map van maakt

Om de een of andere reden werkt dit wel, hoewel ik nog steeds niet goed begrijp wat het conflict precies veroorzaakt heeft.

Anyway, mijn probleem is helemaal opgelost!!

Bedankt & prettig weekend, Jeroen!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan