Uploaden van een foto
Heeft je map waarin je het bestand wil zetten wel de goede bestandsrechten?
Warning: move_uploaded_file(/images/plaatje.gif) [function.move-uploaded-file]: failed to open stream: No such file or directory in C:\xampp\htdocs\leerphp\afbeelding.php on line 23
Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'C:\xampp\tmp\php73A0.tmp' to '/images/plaatje.gif' in C:\xampp\htdocs\leerphp\afbeelding.php on line 23
Het bestand kon niet verplaatst worden
Het bestand test.gif is geupload
Quote:
Dat zou betekenen dat de filesize groter is dan in het html document aangegeven. Dus ga ik daar nog eens naar kijken.
Dat moet je niet regelen met html, dat is aanpasbaar.
Je moet het zoeken in de php.ini.
http://www.php.net/manual/en/ini.core.php#ini.upload-max-filesize
Ozzie PHP op 18/10/2012 12:06:10:
Heeft je map waarin je het bestand wil zetten wel de goede bestandsrechten?
Ja, schrijfrechten staat aan voor alle geberuikers
Karin Gijssen op 18/10/2012 11:39:31:
Leuk om zoveel discussie te zien, aangezien het script uit het PHP studieboek komt. (Handboek PHP 5.3 van Arjan Burger). Maar hoe je het ook wendt of keert...het probleem is nog steeds niet duidelijk. Waarom komt het script niet voorbij de eerste if? Ik zal zeker even met tigzag aan de gang gaan.
Toevoeging op 18/10/2012 11:40:56:
Nomaals: dit script komt uit een studieboek. Ik heb het niet zelf verzonnen ;-)
Toevoeging op 18/10/2012 11:40:56:
Chris NVT op 18/10/2012 07:45:36:
Karin,
Het is niet aan te raden om 'het echte pad' op te geven wat je op regel 4 doet. Maar bijvoorbeeld alleen /images.
Tevens controleer je niets in je if statements, wat een beetje raar is.
Het is bijvoorbeeld
Dit pas je ook zo toe bij de if is_uploaded_file statement om te kijken of het gevult is. Je kunt ook empty gebruiken, beide doen in principe het zelfde alleen omgedraaid!
isset kijkt of er een waarde is, en empty kijkt of er geen waarde is. !isset kijkt of er geen waarde is, en !empty kijkt of er wel een waarde is.
Het is niet aan te raden om 'het echte pad' op te geven wat je op regel 4 doet. Maar bijvoorbeeld alleen /images.
Tevens controleer je niets in je if statements, wat een beetje raar is.
Code (php)
1
2
3
4
2
3
4
<?php
if (!move_uploaded_file($_FILES['afbeelding']['tmp_name'], $pad.$doelbestandsnaam.$extensie[0])
//dit ook geen goede if statement*
?>
if (!move_uploaded_file($_FILES['afbeelding']['tmp_name'], $pad.$doelbestandsnaam.$extensie[0])
//dit ook geen goede if statement*
?>
Het is bijvoorbeeld
Dit pas je ook zo toe bij de if is_uploaded_file statement om te kijken of het gevult is. Je kunt ook empty gebruiken, beide doen in principe het zelfde alleen omgedraaid!
isset kijkt of er een waarde is, en empty kijkt of er geen waarde is. !isset kijkt of er geen waarde is, en !empty kijkt of er wel een waarde is.
Nomaals: dit script komt uit een studieboek. Ik heb het niet zelf verzonnen ;-)
Dat zijn voorbeelden, en geen werkelijkheid.
In ieder geval weer veel nieuwe ideeën en bronnen (zoals tizag) waar ik verder mee kan! Dit is het uiteindelijke, werkende script:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
if ($_POST["knop"]) {
$doelbestandsnaam = "plaatje";
$pad = "images/";
if (is_uploaded_file($_FILES['afbeelding']['tmp_name'])) {
// bestandgrootte controleren
if ($_FILES['afbeelding']['size'] > 150000){
echo "Het bestand is te groot";
exit;
}
//extensie controleren
if (!preg_match("/((.gif|.jpg|.png)$)/", $_FILES['afbeelding']['name'], $extensie)) {
echo "Het bestand is niet van het juiste type";
exit;
}
if (!move_uploaded_file($_FILES['afbeelding']['tmp_name'], $pad.$doelbestandsnaam.$extensie[0])){
echo "Het bestand kon niet verplaatst worden";
exit;
}
echo "Het bestand ".$_FILES['afbeelding']['name']." is geupload";
} else {
echo "Het uploaden is niet gelukt";
echo $_FILES['afbeelding']['error'];
}
} else {
?>
if ($_POST["knop"]) {
$doelbestandsnaam = "plaatje";
$pad = "images/";
if (is_uploaded_file($_FILES['afbeelding']['tmp_name'])) {
// bestandgrootte controleren
if ($_FILES['afbeelding']['size'] > 150000){
echo "Het bestand is te groot";
exit;
}
//extensie controleren
if (!preg_match("/((.gif|.jpg|.png)$)/", $_FILES['afbeelding']['name'], $extensie)) {
echo "Het bestand is niet van het juiste type";
exit;
}
if (!move_uploaded_file($_FILES['afbeelding']['tmp_name'], $pad.$doelbestandsnaam.$extensie[0])){
echo "Het bestand kon niet verplaatst worden";
exit;
}
echo "Het bestand ".$_FILES['afbeelding']['name']." is geupload";
} else {
echo "Het uploaden is niet gelukt";
echo $_FILES['afbeelding']['error'];
}
} else {
?>
<form enctype="multipart/form-data" action="" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="150000" />
Upload afbeelding: <input name="afbeelding" type="file" />
<input type="submit" value="Uploaden" name="knop" />
</form>
alleen een beetje jammer dat je niks met onze aanwijzingen doet..
Stefan van den Broek op 18/10/2012 12:37:49:
alleen een beetje jammer dat je niks met onze aanwijzingen doet..
Ik doe daar zeker wat mee en waardeer het ook zeer, Stefan. Elke opmerking geeft meer inzicht en ik heb er ook zeker een stel opgeschreven voor verder gebruik. Ik heb voor nu alleen even zo veel mogelijk het boek van Arjan Burger aangehouden, omdat daar een doorgaande lijn inzit en ik anders straks bij vervolgopdrachtjes niet meer weet wat ik zelf allemaal anders heb gedaan en heb aangepast naar aanleiding van jullie reacties. Het is gewoon even praktischer zo...
Stefan van den Broek op 19/10/2012 09:25:48:
oke, ik doelde natuurlijk op dit:
en zo stonden er wel meer dingen:)
en zo stonden er wel meer dingen:)
Dat is nu het nadeel als er 'voorbeelden' een-op-een gebruikt worden. Je kunt de opdrac ht beter zelf schrijven ipv overtypen. Dan snap je ook wat je doet, en nog belangrijker waarom.
anders moet je even een pictogram uploaden (dit zijn bijna niks qua grootte).