PHP -zelfstudie

PHP HOME PHP-intro PHP-installatie PHP-syntaxis PHP-opmerkingen PHP-variabelen PHP-echo / afdrukken PHP-gegevenstypen PHP-strings PHP-nummers PHP-wiskunde PHP-constanten PHP-operators PHP Als...Anders...Anders PHP-switch PHP-loops PHP-functies PHP-arrays PHP Superglobals PHP RegEx

PHP- formulieren

PHP-formulierverwerking PHP-formuliervalidatie PHP-formulier vereist URL/e-mail van PHP-formulier PHP-formulier voltooid

PHP Geavanceerd

PHP-datum en tijd PHP opnemen PHP-bestandsverwerking PHP-bestand openen/lezen PHP-bestand maken/schrijven PHP-bestand uploaden PHP-cookies PHP-sessies PHP-filters PHP-filters geavanceerd PHP-callback-functies PHP JSON PHP-uitzonderingen

PHP OOP

PHP Wat is OOP PHP-klassen/objecten PHP-constructor PHP-vernietiger PHP-toegangsmodificaties PHP-overerving PHP-constanten PHP abstracte lessen PHP-interfaces PHP-kenmerken PHP statische methoden Statische eigenschappen van PHP PHP-naamruimten PHP-iterables

MySQL- database

MySQL-database MySQL Connect MySQL DB maken MySQL-tabel maken MySQL Gegevens invoegen MySQL Laatste ID ophalen MySQL Meerdere invoegen MySQL voorbereid MySQL Gegevens selecteren MySQL Waar MySQL Bestel op MySQL Gegevens verwijderen MySQL-updategegevens MySQL-limietgegevens

PHP XML

PHP XML-parsers PHP SimpleXML-parser PHP SimpleXML - Get PHP XML Expat PHP XML DOM

PHP - AJAX

Ajax-intro AJAX PHP AJAX-database AJAX XML Live zoeken in Ajax Ajax-peiling

PHP- voorbeelden

PHP-voorbeelden PHP-compiler PHP-quiz PHP-oefeningen PHP-certificaat

PHP- referentie

PHP-overzicht PHP-array PHP-agenda PHP-datum PHP-map PHP-fout PHP-uitzondering PHP-bestandssysteem PHP-filter PHP FTP PHP JSON PHP-sleutelwoorden PHP Libxml PHP-e-mail PHP-wiskunde PHP Diversen PHP MySQLi PHP-netwerk PHP-uitvoercontrole PHP RegEx PHP SimpleXML PHP-stream PHP-string Beheer van PHP-variabelen PHP XML-parser PHP-zip PHP-tijdzones

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_uploadsrichtlijn 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 .