Hallo iedereen,

Al een paar dagen zit ik met het volgende probleem:
Ik kan geen afbeeldingen naar de webserver uploaden via php.
Ik krijg geen errors. Het bestand wil telkens maar niet op de server terecht komen.

Dit is mijn script:

php:
<?php
if ($_POST['submit'] && $_FILES['page-image']['size'] > 0) {
$target = 'images/';
if (($_FILES['page-image']['type'] == 'image/jpeg') || ($_FILES['page-image']['type'] == 'image/png')) {
$target = $target . basename($_FILES['page-image']['name']);
if (move_uploaded_file($FILES['page-image']['tmp_name'], $target)) {
echo "GELUKT!";
}
}
}
?>

html:
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" enctype="multipart/form-data">
<input style="width:100%;" type="file" name="page-image" />
<input type="submit" name="submit" value="Uploaden" />
</form>

Alvast bedankt voor de hulp!

Steven
In je form tag moet je het volgende stukje toevoegen als je bestanden wilt kunnen uploaden.
enctype="multipart/form-data"


Ik denk dat dat het is.
Deze heb ik al toegevoegd aan de <form> tag, alleen vergeten over te nemen. Heb het nu aangepast in de code.
Steven Hoogervorst op 20/12/2013 12:11:20

Deze heb ik toegevoegd, alleen vergeten over te nemen. Heb het nu aangepast in de code.

Plaats dit eens bovenaan je code

<?php
error_reporting(E_ALL);
?>


Je zou sowieso op deze regel een foutmelding moeten krijgen want je mist een ;

<form method="post" action="<?php echo $_SERVER['PHP_SELF'] ?>


Ik zou ook $_SERVER['PHP_SELF'] vervangen door $_SERVER['SCRIPT_NAME'] (Veiliger omdat hier geen queries worden meegestuurd)

Daarnaast zou ik ipv $_POST['submit'] gebruiken

$_SERVER['REQUEST_METHOD'] == POST

De HTML code heb ik snel overgenomen. Er kunnen daarin wat fouten zitten. Zelf krijg ik geen foutmeldingen. Ik ga de code die je hebt gestuurd invoegen.

[size=xsmall]Toevoeging op 20/12/2013 12:26:52:[/size]

Krijg geen foutmeldingen en de afbeelding wordt nog steeds niet geüpload.
Wat meldt dit als je het formulier verstuurd hebt?


<?php
echo "</pre>".print_r($_FILES,1)."</pre>";
?>


edit
Ik zie het al:
Lijn 6: $FILES['page-image']['tmp_name']

Een underscore mist....
Array ( [page-image] => Array ( [name] => 1460284_10151857167086840_936084111_n.jpg [type] => image/jpeg [tmp_name] => /tmp/phpnP44pZ [error] => 0 [size] => 83692 ) )
Michael - op 20/12/2013 12:23:14

Je zou sowieso op deze regel een foutmelding moeten krijgen want je mist een ;

<form method="post" action="<?php echo $_SERVER['PHP_SELF'] ?>


Nope, daar is geen puntkomma nodig.

Waar ik mee zou beginnen is boven aan je script een print_r doen op je $_FILES array, dan kan je zien wat er in zit.
Daarna zou ik achter elke "if" een "else" zetten waarin je even simpelweg een echo geeft zodat je weet waar het verkeerd liep.
Debuggen dus....

<?php
print_r( $_FILES );
 
if ($_POST['submit'] && $_FILES['page-image']['size'] > 0) {
  $target = 'images/';
  if (($_FILES['page-image']['type'] == 'image/jpeg') || ($_FILES['page-image']['type'] == 'image/png')) {
     $target = $target . basename($_FILES['page-image']['name']);
     if (move_uploaded_file($FILES['page-image']['tmp_name'], $target)) {
       echo "GELUKT!";
     } else {
       echo 'move mislukt';
     } 
  } else {
    echo 'type incorrect';
  }
} else {
  echo 'niet gepost of geen image';
}
?>


- Aar - op 20/12/2013 12:30:30

Wat meldt dit als je het formulier verstuurd hebt?


<?php
echo "</pre>".print_r($_FILES,1)."</pre>";
?>


edit
Ik zie het al:
Lijn 6: $FILES['page-image']['tmp_name']

Een underscore mist....


Ooh ik zie het nu ook! Hartelijk bedankt voor de hulp! Het werkt.
Erwin H op 20/12/2013 12:32:28

[quote="Michael - op 20/12/2013 12:23:14"]
Je zou sowieso op deze regel een foutmelding moeten krijgen want je mist een ;

<form method="post" action="<?php echo $_SERVER['PHP_SELF'] ?>


Nope, daar is geen puntkomma nodig.
[/quote]
Oke, dat wist ik niet. Ondanks dat het slordig lijkt, werkt hier inderdaad ook zonder ;

Reageren