PHP- lêer oplaai
Met PHP is dit maklik om lêers na die bediener op te laai.
Gevaar kom egter met gemak, so wees altyd versigtig wanneer jy lêeroplaaie toelaat!
Stel die "php.ini"-lêer op
Maak eers seker dat PHP opgestel is om lêeroplaaie toe te laat.
Soek in jou "php.ini"-lêer vir die file_uploads
aanwysing en stel dit op Aan:
file_uploads = On
Skep die HTML-vorm
Skep dan 'n HTML-vorm wat gebruikers toelaat om die prentlêer te kies wat hulle wil oplaai:
<!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>
Sommige reëls om te volg vir die HTML-vorm hierbo:
- Maak seker dat die vorm method="post" gebruik
- Die vorm benodig ook die volgende kenmerk: enctype="multipart/form-data". Dit spesifiseer watter inhoudtipe om te gebruik wanneer die vorm ingedien word
Sonder die vereistes hierbo sal die lêeroplaai nie werk nie.
Ander dinge om op te let:
- Die type="file"-kenmerk van die <input>-merker wys die invoerveld as 'n lêerkieskontrole, met 'n "Browse"-knoppie langs die invoerkontrole
Die vorm hierbo stuur data na 'n lêer genaamd "upload.php", wat ons volgende sal skep.
Skep die oplaai lêer PHP Script
Die "upload.php" lêer bevat die kode vir die oplaai van 'n lêer:
<?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 verduidelik:
- $target_dir = "oplaaie/" - spesifiseer die gids waar die lêer geplaas gaan word
- $target_file spesifiseer die pad van die lêer wat opgelaai moet word
- $uploadOk=1 is nog nie gebruik nie (sal later gebruik word)
- $imageFileType hou die lêeruitbreiding van die lêer (in kleinletters)
- Kyk dan of die beeldlêer 'n werklike beeld of 'n vals beeld is
Let wel: Jy sal 'n nuwe gids genaamd "uploads" moet skep in die gids waar die "upload.php"-lêer is. Die opgelaaide lêers sal daar gestoor word.
Kyk of lêer reeds bestaan
Nou kan ons 'n paar beperkings byvoeg.
Eerstens sal ons kyk of die lêer reeds in die "oplaaie"-lêergids bestaan. As dit wel gebeur, word 'n foutboodskap vertoon, en $uploadOk is op 0 gestel:
// Check if file already exists
if (file_exists($target_file)) {
echo "Sorry, file already exists.";
$uploadOk = 0;
}
Beperk lêergrootte
Die lêerinvoerveld in ons HTML-vorm hierbo word "fileToUpload" genoem.
Nou wil ons die grootte van die lêer nagaan. As die lêer groter as 500KB is, word 'n foutboodskap vertoon, en $uploadOk is op 0 gestel:
// Check file size
if ($_FILES["fileToUpload"]["size"] > 500000) {
echo "Sorry, your file is too large.";
$uploadOk = 0;
}
Beperk lêertipe
Die kode hieronder laat gebruikers net toe om JPG-, JPEG-, PNG- en GIF-lêers op te laai. Alle ander lêertipes gee 'n foutboodskap voordat $uploadOk op 0 gestel word:
// 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 PHP-lêer oplaai
Die volledige "upload.php"-lêer lyk nou so:
<?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.";
}
}
?>
Voltooi PHP-lêerstelselverwysing
Vir 'n volledige verwysing van lêerstelselfunksies, gaan na ons volledige PHP-lêerstelselverwysing .