Code d'implémentation de téléchargement de fichier image PHP

高洛峰
Libérer: 2023-03-04 16:22:01
original
2289 Les gens l'ont consulté

Pour la sécurité du site Web, le téléchargement de fichiers php n'est absolument pas autorisé. Si quelqu'un entre dans votre backend et télécharge un fichier php, tout le code source de votre site Web sera enregistré et deviendra le sien, et il pourra le conditionner directement. pour voir votre code. Par conséquent, vous devez contrôler le répertoire téléchargé et le type de fichier. Généralement, seules les images peuvent être téléchargées.

Créer un formulaire de téléchargement de fichiers
Il est très utile de permettre aux utilisateurs de télécharger des fichiers à partir d'un formulaire.
Veuillez consulter le formulaire HTML suivant pour télécharger des fichiers :

<html> 
<body> 
<form action="upload_file.php" method="post" 
enctype="multipart/form-data"> 
<label for="file">Filename:</label> 
<input type="file" name="file" id="file" /> 
<br /> 
<input type="submit" name="submit" value="Submit" /> 
</form> 
</body> 
</html>
Copier après la connexion

Veuillez noter les informations suivantes concernant ce formulaire :

le formulaire. Quel type de contenu utiliser. Utilisez "multipart/form-data" lorsque votre formulaire nécessite des données binaires, telles que le contenu d'un fichier. L'attribut type="file" de la balise
spécifie que l'entrée doit être traitée comme un fichier. Par exemple, lors de la prévisualisation dans un navigateur, vous verrez un bouton Parcourir à côté de la zone de saisie.
Remarque : autoriser les utilisateurs à télécharger des fichiers constitue un risque de sécurité énorme. Veuillez autoriser uniquement les utilisateurs de confiance à effectuer des opérations de téléchargement de fichiers.
Créez un script de téléchargement
Le fichier "upload_file.php" contient le code pour télécharger des fichiers :

<?php 
if ($_FILES["file"]["error"] > 0) 
{ 
echo "Error: " . $_FILES["file"]["error"] . "<br />"; 
} 
else 
{ 
echo "Upload: " . $_FILES["file"]["name"] . "<br />"; 
echo "Type: " . $_FILES["file"]["type"] . "<br />"; 
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />"; 
echo "Stored in: " . $_FILES["file"]["tmp_name"]; 
} 
?>
Copier après la connexion

En utilisant le tableau global $_FILES de PHP, vous pouvez télécharger des fichiers depuis l'ordinateur client vers le serveur distant.
Le premier paramètre est le nom d'entrée du formulaire, et le deuxième indice peut être "name", "type", "size", "tmp_name" ou "error". Comme ceci :

$_FILES["file"]["name"] - 被上传文件的名称 
$_FILES["file"]["type"] - 被上传文件的类型 
$_FILES["file"]["size"] - 被上传文件的大小,以字节计 
$_FILES["file"]["tmp_name"] - 存储在服务器的文件的临时副本的名称 
$_FILES["file"]["error"] - 由文件上传导致的错误代码
Copier après la connexion

C'est un moyen très simple de télécharger des fichiers. Pour des raisons de sécurité, vous devez ajouter des restrictions quant aux personnes autorisées à télécharger des fichiers.
Limitation des téléchargements
Dans ce script, nous ajoutons une limite aux téléchargements de fichiers. Les utilisateurs ne peuvent télécharger que des fichiers .gif ou .jpeg, et la taille du fichier doit être inférieure à 20 Ko :

<?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 "Error: " . $_FILES["file"]["error"] . "<br />"; 
} 
else 
{ 
echo "Upload: " . $_FILES["file"]["name"] . "<br />"; 
echo "Type: " . $_FILES["file"]["type"] . "<br />"; 
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />"; 
echo "Stored in: " . $_FILES["file"]["tmp_name"]; 
} 
} 
else 
{ 
echo "Invalid file"; 
} 
?>
Copier après la connexion

Remarque : Pour IE, le type de fichier jpg reconnu doit être pjpeg, et pour FireFox, ça doit être en jpeg.
Enregistrez le fichier téléchargé
L'exemple ci-dessus crée une copie temporaire du fichier téléchargé dans le dossier temporaire PHP du serveur.
Ce fichier temporaire copié disparaîtra à la fin du script. Pour enregistrer le fichier téléchargé, nous devons le copier vers un autre emplacement :

<?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 "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />"; 
echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />"; 
if (file_exists("upload/" . $_FILES["file"]["name"])) 
{ 
echo $_FILES["file"]["name"] . " already exists. "; 
} 
else 
{ 
move_uploaded_file($_FILES["file"]["tmp_name"], 
"upload/" . $_FILES["file"]["name"]); 
echo "Stored in: " . "upload/" . $_FILES["file"]["name"]; 
} 
} 
} 
else 
{ 
echo "Invalid file"; 
} 
?>
Copier après la connexion

Le script ci-dessus détecte si le fichier existe déjà. S'il n'existe pas, il copie le fichier dans le dossier spécifié.
Remarque : Cet exemple enregistre le fichier dans un nouveau dossier nommé "upload".

Pour plus d'articles liés au code d'implémentation du téléchargement de fichiers image PHP, veuillez faire attention au site Web PHP chinois !

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal