File PHP Upload
En PHP, vous pouvez télécharger des fichiers sur le serveur.
Des exemples de cette section au titre du projet d'essai est terminée, la structure de répertoire:
test |-----upload # 文件上传的目录 |-----form.html # 表单文件 |-----upload_file.php # php 上传代码
Créer un formulaire de téléchargement de fichiers
Permet aux utilisateurs de télécharger des fichiers à partir d'un formulaire est utile.
Considérez le formulaire HTML suivant pour télécharger des fichiers:
<html> <head> <meta charset="utf-8"> <title>本教程(w3big.com)</title> </head> <body> <form action="upload_file.php" method="post" enctype="multipart/form-data"> <label for="file">文件名:</label> <input type="file" name="file" id="file"><br> <input type="submit" name="submit" value="提交"> </form> </body> </html>
Enregistrez le code ci-dessus pour form.html fichier.
Quelques éléments liés à la forme HTML ci-dessus sont énumérés ci-dessous:
- <Form> attribut tag enctypeprécise le contenu lors de la soumission d' un formulaire type à utiliser. Lorsque la forme nécessite des données binaires, tels que le contenu du fichier, utilisez le"multipart / form-data".
- <Input> typede tag= "file"attribut spécifie l'entrée doit être traitée en tant que fichiers. Par exemple, lors de la prévisualisation dans un navigateur, vous verrez à côté de la zone de saisie a un bouton Parcourir.
Remarque: Permettre aux utilisateurs de télécharger des fichiers est un énorme risque de sécurité.S'il vous plaît ne permet aux utilisateurs de confiance pour effectuer des téléchargements de fichiers.
Créer un script d'upload
"Upload_file.php" fichier contient le code pour le téléchargement de fichiers:
<?php if ($_FILES["file"]["error"] > 0) { echo "错误:" . $_FILES["file"]["error"] . "<br>"; } else { echo "上传文件名: " . $_FILES["file"]["name"] . "<br>"; echo "文件类型: " . $_FILES["file"]["type"] . "<br>"; echo "文件大小: " . ($_FILES["file"]["size"] / 1024) . " kB<br>"; echo "文件临时存储的位置: " . $_FILES["file"]["tmp_name"]; } ?>
En utilisant PHP réseaux mondiaux $ _FILES, vous pouvez télécharger des fichiers sur un serveur distant à partir de l'ordinateur client.
Le premier paramètre est le nom d'entrée de forme, le second indice peut être un "nom", "type", "taille", "tmp_name" ou "erreur". Comme suit:
- $ _FILES [ "Fichier"] [ "nom"] - le nom du fichier téléchargé
- $ _FILES [ "File"] [ "type"] - types de fichiers Télécharger
- $ _FILES [ "Fichier"] [ "taille"] - la taille du fichier de téléchargement en octets
- $ _FILES [ "Fichier"] [ "tmp_name"] - une copie temporaire est stocké dans le nom du serveur de fichiers
- $ _FILES [ "Fichier"] [ "erreur"] - le code d'erreur résultant du téléchargement de fichiers
Ceci est un très simple téléchargement de fichiers. Sur la base de considérations de sécurité, vous devez augmenter les restrictions sur lesquels les utilisateurs sont autorisés à télécharger des fichiers.
Ajouter limite
Dans ce script, nous avons ajouté à la limite de téléchargement de fichier. Les utilisateurs ne peuvent télécharger .gif, .jpeg, .jpg, .png, la taille du fichier doit être inférieure à 200 kB:
<?php // 允许上传的图片后缀 $allowedExts = array("gif", "jpeg", "jpg", "png"); $temp = explode(".", $_FILES["file"]["name"]); $extension = end($temp); // 获取文件后缀名 if ((($_FILES["file"]["type"] == "image/gif") || ($_FILES["file"]["type"] == "image/jpeg") || ($_FILES["file"]["type"] == "image/jpg") || ($_FILES["file"]["type"] == "image/pjpeg") || ($_FILES["file"]["type"] == "image/x-png") || ($_FILES["file"]["type"] == "image/png")) && ($_FILES["file"]["size"] < 204800) // 小于 200 kb && in_array($extension, $allowedExts)) { if ($_FILES["file"]["error"] > 0) { echo "错误:: " . $_FILES["file"]["error"] . "<br>"; } else { echo "上传文件名: " . $_FILES["file"]["name"] . "<br>"; echo "文件类型: " . $_FILES["file"]["type"] . "<br>"; echo "文件大小: " . ($_FILES["file"]["size"] / 1024) . " kB<br>"; echo "文件临时存储的位置: " . $_FILES["file"]["tmp_name"]; } } else { echo "非法的文件格式"; } ?>
Enregistrez le fichier à télécharger
L'exemple ci-dessus est de créer une copie temporaire du fichier téléchargé dans un dossier de PHP serveur de fichier temporaire.
La copie temporaire du fichier disparaît à la fin du script. Pour enregistrer un fichier est téléchargé, nous avons besoin de le copier vers un autre emplacement:
<?php // 允许上传的图片后缀 $allowedExts = array("gif", "jpeg", "jpg", "png"); $temp = explode(".", $_FILES["file"]["name"]); echo $_FILES["file"]["size"]; $extension = end($temp); // 获取文件后缀名 if ((($_FILES["file"]["type"] == "image/gif") || ($_FILES["file"]["type"] == "image/jpeg") || ($_FILES["file"]["type"] == "image/jpg") || ($_FILES["file"]["type"] == "image/pjpeg") || ($_FILES["file"]["type"] == "image/x-png") || ($_FILES["file"]["type"] == "image/png")) && ($_FILES["file"]["size"] < 204800) // 小于 200 kb && in_array($extension, $allowedExts)) { if ($_FILES["file"]["error"] > 0) { echo "错误:: " . $_FILES["file"]["error"] . "<br>"; } else { echo "上传文件名: " . $_FILES["file"]["name"] . "<br>"; echo "文件类型: " . $_FILES["file"]["type"] . "<br>"; echo "文件大小: " . ($_FILES["file"]["size"] / 1024) . " kB<br>"; echo "文件临时存储的位置: " . $_FILES["file"]["tmp_name"] . "<br>"; // 判断当期目录下的 upload 目录是否存在该文件 // 如果没有 upload 目录,你需要创建它,upload 目录权限为 777 if (file_exists("upload/" . $_FILES["file"]["name"])) { echo $_FILES["file"]["name"] . " 文件已经存在。 "; } else { // 如果 upload 目录不存在该文件则将文件上传到 upload 目录下 move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]); echo "文件存储在: " . "upload/" . $_FILES["file"]["name"]; } } } else { echo "非法的文件格式"; } ?>
Le script ci-dessus détecte si le fichier existe déjà, sinon, mettre les fichiers sont copiés dans un répertoire appelé "transfert" de.
opération de chargement Demo est la suivante: