Con PHP, è facile caricare i file sul server.
Tuttavia, con facilità arriva il pericolo, in modo da essere sempre attenti quando si permette il caricamento di file!
Configurare il "php.ini" File
In primo luogo, verificare che PHP è configurato per consentire il caricamento di file.
Nel vostro "php.ini" di file, la ricerca per la direttiva file_uploads, e impostarlo su On:
file_uploads = On
Creare il form HTML
Successivamente, creare un modulo HTML che consentono agli utenti di scegliere il file di immagine che vogliono caricare:
<!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>
Alcune regole da seguire per il modulo HTML di cui sopra:
- Assicurarsi che il modulo utilizza method = "post"
- Il modulo deve inoltre il following attributo: enctype = "/ form-data multipart". Si specifica quale tipo di contenuto da utilizzare quando viene inviato il modulo
Senza i requisiti di cui sopra, il caricamento di file non funzionerà.
Altre cose da notare:
- Il type="file" attributo del <input> tag mostra il campo di input come un controllo di file di selezione, con un "Browse" pulsante accanto al controllo di input
Il modulo di cui sopra invia i dati in un file chiamato "upload.php" , che creeremo prossimo.
Crea il caricamento del file di script PHP
Il "upload.php" file contiene il codice per il caricamento di un file:
<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType =
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;
}
}
?>
script PHP ha spiegato:
- $ target_dir = "uploads/" - specifica la directory in cui il file sta per essere collocato
- $ File_di_riferimento specifica il percorso del file da caricare
- $ uploadOk = 1 non è ancora utilizzata (will be used later)
- $ ImageFileType detiene l'estensione del file
- Successivamente, verificare se il file di immagine è un'immagine reale o un'immagine falsa
Nota: è necessario creare una nuova directory chiamata "uploads" nella directory in cui "upload.php" risiede il file. I file caricati verranno salvati lì.
Controllare se il file esiste già
Ora possiamo aggiungere alcune restrizioni.
In primo luogo, si provvederà a controllare se il file esiste già nella "uploads" cartella. In tal caso, viene visualizzato un messaggio di errore, e $ uploadOk è impostato su 0:
// Check if file already exists
if (file_exists($target_file)) {
echo "Sorry, file already exists.";
$uploadOk = 0;
}
Limite di dimensione del file
Il campo di immissione di file con il nostro modulo HTML sopra si chiama "fileToUpload" .
Ora, vogliamo controllare la dimensione del file. Se il file è più grande di 500 KB, viene visualizzato un messaggio di errore, e $ uploadOk è impostato su 0:
// Check file size
if ($_FILES["fileToUpload"]["size"] > 500000) {
echo "Sorry, your file is too large.";
$uploadOk = 0;
}
Tipo di limite di file
Il codice di seguito solo permette agli utenti di caricare JPG, JPEG, PNG e GIF. Tutti gli altri tipi di file dà un messaggio di errore, prima di $ uploadOk a 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;
}
Completa Carica file di script PHP
La completa "upload.php" file ora appare così:
<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType =
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 ". basename( $_FILES["fileToUpload"]["name"]). " has been
uploaded.";
} else {
echo "Sorry, there was an error uploading your file.";
}
}
?>
Completa PHP Filesystem di riferimento
Per un riferimento completo di funzioni di file system, vai alla nostra completa PHP Filesystem di riferimento .