PHP Bestand Upload
- Vorige pagina PHP bestand aanmaken/schrijven
- Volgende pagina PHP Cookies
Met PHP kun je bestanden uploaden naar de server.
Maak een bestandsuploadformulier aan
Het toestaan van gebruikers om bestanden te uploaden vanuit het formulier is zeer nuttig.
Zie hieronder deze HTML-formulier voor het uploaden van bestanden:
<html> <body> <form action="upload_file.php" method="post" enctype="multipart/form-data"> <label for="file">Bestandsnaam:</label> <input type="file" name="file" id="file" /> <br /> <input type="submit" name="submit" value="Submit" /> </form> </body> </html>
Let op de volgende informatie over dit formulier:
De property enctype van het <form>-tag bepaalt welk contenttype moet worden gebruikt bij het indienen van het formulier. Gebruik "multipart/form-data" wanneer het formulier binair data nodig heeft, zoals bestandsinhoud.
De property type="file" van het <input>-tag bepaalt dat de invoer als bestand moet worden behandeld. Bijvoorbeeld, wanneer je het in de browser bekijkt, zie je een knop om te bladeren naast het invoerveld.
Opmerking:Het toestaan van gebruikers om bestanden te uploaden is een grote beveiligingsrisico. Laat alleen betrouwbare gebruikers bestanden uploaden.
Maak een uploadscript aan
Het bestand "upload_file.php" bevat code voor het uploaden van bestanden:
<?php if ($_FILES["file"]["error"] > 0) { echo "Fout: " . $_FILES["file"]["error"] . "<br />"; } else { echo "Upload: " . $_FILES["file"]["name"] . "<br />"; echo "Type: " . $_FILES["file"]["type"] . "<br />"; echo "Grootte: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />"; echo "Opgeslagen in: " . $_FILES["file"]["tmp_name"]; } ?>
Door gebruik te maken van de PHP-globale array $_FILES, kun je bestanden van de klantcomputer naar een externe server uploaden.
De eerste parameter is de input name van het formulier, de tweede index kan zijn "name", "type", "size", "tmp_name" of "error". Zoals hierboven:
- $_FILES["file"]["name"] - Naam van het geüploade bestand
- $_FILES["file"]["type"] - Type van het geüploade bestand
- $_FILES["file"]["size"] - Grootte van het geüploade bestand in bytes
- $_FILES["file"]["tmp_name"] - Naam van de tijdelijke kopie van het bestand opgeslagen op de server
- $_FILES["file"]["error"] - Foutcode veroorzaakt door het uploaden van het bestand
Dit is een zeer eenvoudige manier om bestanden te uploaden. Vanwege veiligheidsredenen moet je beperkingen instellen voor welke gebruikers bestanden mogen uploaden.
Uploadbeperkingen
In deze script hebben we beperkingen toegevoegd voor het uploaden van bestanden. De gebruiker kan alleen .gif of .jpeg-bestanden uploaden, en de bestandsgrootte moet kleiner zijn dan 20 kb:
<?php if ((($_FILES["file"]["type"] == "image/gif") || ($_FILES["file"]["type"] == "image/jpeg") || ($_FILES["file"]["type"] == "image/pjpeg")) && ($_FILES["file"]["size"] < 20000)) { if ($_FILES["file"]["error"] > 0) { echo "Fout: " . $_FILES["file"]["error"] . "<br />"; } else { echo "Upload: " . $_FILES["file"]["name"] . "<br />"; echo "Type: " . $_FILES["file"]["type"] . "<br />"; echo "Grootte: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />"; echo "Opgeslagen in: " . $_FILES["file"]["tmp_name"]; } } else { echo "Ongeldig bestand"; } ?>
Opmerking:Voor IE moet het type van jpg-bestanden als pjpeg worden herkend, voor Firefox moet het jpeg zijn.
Opslaan van het geüploade bestand
In dit voorbeeld heeft de server een tijdelijke kopie van het geüploade bestand gemaakt in de PHP tijdelijke map.
De tijdelijke kopie van het bestand verdwijnt na het einde van het script. Om het geüploade bestand op te slaan, moeten we het kopiëren naar een andere locatie:
<?php if ((($_FILES["file"]["type"] == "image/gif") || ($_FILES["file"]["type"] == "image/jpeg") || ($_FILES["file"]["type"] == "image/pjpeg")) && ($_FILES["file"]["size"] < 20000)) { if ($_FILES["file"]["error"] > 0) { echo "Return Code: " . $_FILES["file"]["error"] . "<br />"; } else { echo "Upload: " . $_FILES["file"]["name"] . "<br />"; echo "Type: " . $_FILES["file"]["type"] . "<br />"; echo "Grootte: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />"; echo "Temp bestand: " . $_FILES["file"]["tmp_name"] . "<br />"; if (file_exists("upload/" . $_FILES["file"]["name"])) { echo $_FILES["file"]["name"] . " bestaat al. "; } else { move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]); echo "Opgeslagen in: " . "upload/" . $_FILES["file"]["name"]; } } } else { echo "Ongeldig bestand"; } ?>
De bovenstaande script controleert of het bestand al bestaat, en als dat niet het geval is, kopieert het bestand naar de opgegeven map.
Opmerking:Deze voorbeeld zet het bestand in een nieuwe map genaamd "upload".
- Vorige pagina PHP bestand aanmaken/schrijven
- Volgende pagina PHP Cookies