PHP- bestand uploaden
Met PHP is het eenvoudig om bestanden naar de server te uploaden.
Met gemak komt echter gevaar, dus wees altijd voorzichtig wanneer u bestandsuploads toestaat!
Configureer het "php.ini"-bestand
Zorg er eerst voor dat PHP is geconfigureerd om bestandsuploads toe te staan.
Zoek in uw "php.ini"-bestand naar de file_uploads
richtlijn en stel deze in op Aan:
file_uploads = On
Maak het HTML-formulier
Maak vervolgens een HTML-formulier waarmee gebruikers het afbeeldingsbestand kunnen kiezen dat ze willen uploaden:
<!DOCTYPE html>
<html>
<body>
<form action="upload.php" method="post"
enctype="multipart/form-data">
Select image to upload:
<input type="file" name="fileToUpload" id="fileToUpload">
<input type="submit" value="Upload Image" name="submit">
</form>
</body>
</html>
Enkele regels die moeten worden gevolgd voor het bovenstaande HTML-formulier:
- Zorg ervoor dat het formulier method="post" gebruikt
- Het formulier heeft ook het volgende attribuut nodig: enctype="multipart/form-data". Het specificeert welk inhoudstype moet worden gebruikt bij het indienen van het formulier
Zonder de bovenstaande vereisten werkt het uploaden van bestanden niet.
Andere dingen om op te merken:
- Het type = "file" attribuut van de <input> tag toont het invoerveld als een bestand-select control, met een "Browse" knop naast het input control
Het bovenstaande formulier stuurt gegevens naar een bestand met de naam "upload.php", dat we vervolgens zullen maken.
Maak het uploadbestand PHP-script
Het bestand "upload.php" bevat de code voor het uploaden van een bestand:
<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType =
strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
$check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
if($check !== false) {
echo "File is an image - " . $check["mime"] . ".";
$uploadOk = 1;
} else {
echo "File is not an image.";
$uploadOk = 0;
}
}
?>
PHP-script uitgelegd:
- $target_dir = "uploads/" - specificeert de map waar het bestand zal worden geplaatst
- $target_file specificeert het pad van het te uploaden bestand
- $uploadOk=1 is nog niet gebruikt (wordt later gebruikt)
- $imageFileType bevat de bestandsextensie van het bestand (in kleine letters)
- Controleer vervolgens of het afbeeldingsbestand een echte afbeelding of een nepafbeelding is
Opmerking: u moet een nieuwe map maken met de naam "uploads" in de map waar het bestand "upload.php" zich bevindt. De geüploade bestanden worden daar opgeslagen.
Controleer of het bestand al bestaat
Nu kunnen we enkele beperkingen toevoegen.
Eerst zullen we controleren of het bestand al bestaat in de map "uploads". Als dit het geval is, wordt een foutmelding weergegeven en wordt $uploadOk ingesteld op 0:
// Check if file already exists
if (file_exists($target_file)) {
echo "Sorry, file already exists.";
$uploadOk = 0;
}
Beperk bestandsgrootte
Het bestandsinvoerveld in ons HTML-formulier hierboven heet "fileToUpload".
Nu willen we de grootte van het bestand controleren. Als het bestand groter is dan 500 KB, wordt een foutmelding weergegeven en wordt $uploadOk ingesteld op 0:
// Check file size
if ($_FILES["fileToUpload"]["size"] > 500000) {
echo "Sorry, your file is too large.";
$uploadOk = 0;
}
Beperk bestandstype
Met de onderstaande code kunnen gebruikers alleen JPG-, JPEG-, PNG- en GIF-bestanden uploaden. Alle andere bestandstypen geven een foutmelding voordat $uploadOk wordt ingesteld op 0:
// Allow certain file formats
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
$uploadOk = 0;
}
Voltooi uploadbestand PHP-script
Het volledige "upload.php" bestand ziet er nu als volgt uit:
<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType =
strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
$check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
if($check !== false) {
echo "File is an image - " . $check["mime"] . ".";
$uploadOk = 1;
} else {
echo "File is not an image.";
$uploadOk = 0;
}
}
// Check if file already exists
if (file_exists($target_file)) {
echo "Sorry, file already exists.";
$uploadOk = 0;
}
// Check file size
if ($_FILES["fileToUpload"]["size"] > 500000) {
echo "Sorry, your file is too large.";
$uploadOk = 0;
}
// Allow certain file formats
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
$uploadOk = 0;
}
// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
echo "Sorry, your file was not uploaded.";
// if everything is ok, try to upload file
} else {
if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
echo "The file ". htmlspecialchars( basename( $_FILES["fileToUpload"]["name"])).
" has been uploaded.";
} else {
echo "Sorry, there was an error uploading your file.";
}
}
?>
Volledige PHP-bestandssysteemreferentie
Ga voor een volledige referentie van bestandssysteemfuncties naar onze volledige PHP- bestandssysteemreferentie .