Classe de téléchargement de fichiers
1. Déterminez les attributs des membres de la classe de téléchargement de fichiers
Tout d'abord, nous devons considérer quels attributs sont nécessaires pour télécharger le fichier. Nous pouvons simplement rédiger un formulaire de soumission du fichier, puis l'imprimer. pour voir quels paramètres se trouvent dans $_FILES
Créez un nouveau fichier file_upload_html.html :
Le code est le suivant :
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h2>用户头像上传</h2> <p>用户姓名:张三</p> 现有头像:<img src="" onerror="this.src='./default.jpg'"> <form method="post" enctype="multipart/form-data"> <input type="file" name="photo"><br> <input type="submit" value="上传"> </form> </body> </html>
Récupérez les paramètres soumis par le formulaire, créez un nouveau file_upload_object.php, le code est le suivant suit
<?php /** * Created by PhpStorm. * User: Administrator * Date: 2018/3/3 0003 * Time: 上午 11:33 */ require './file_upload_html.html'; //获取表单提交的参数 $file=isset($_FILES['photo'])?$_FILES['photo']:""; echo "<pre>"; print_r($file); echo "</pre>";
Après avoir soumis le formulaire, le résultat de l'impression est le suivant :
Par conséquent, vous savez que la classe du fichier de téléchargement doit connaître le nom du fichier téléchargé, le type de fichier, l'indicateur d'erreur , et la taille du fichier de téléchargement. Ainsi, lorsque nous écrivons une classe de fichier de téléchargement, nous devons connaître ces attributs. Créez une nouvelle classe de fichier de téléchargement, FileUpload.Class.php Le code est le suivant :
<?php /** * Created by PhpStorm. * User: Administrator * Date: 2018/3/3 0003 * Time: 上午 10:52 */ class FileUpload{ public $type=array( 'image/jpeg','image/pjpeg','image/png','image/x-png','image/gif' ); public $maxSize=1048576;//1M=1024*1024 public $uploadSavePath="./uploads"; public $errorMessage=""; }2, méthode de classe de téléchargement de fichiers
Écrivez une méthode pour gérer les attributs de la classe de téléchargement de fichiers en fonction des besoins de votre entreprise,
tels que les paramètres de taille de téléchargement, télécharger Enregistrez le paramètre de chemin, le nom de la méthode est télécharger ( )
Le code spécifique est le suivant :<?php /** * Created by PhpStorm. * User: Administrator * Date: 2018/3/3 0003 * Time: 上午 10:52 */ class FileUpload{ private $type=array( 'image/jpeg','image/pjpeg','image/png','image/x-png','image/gif' );//文件类型 public $maxSize=1048576;//1M=1024*1024,上传的容量 public $uploadSavePath="./uploads"; //上传保存的路径 public $errorMessage=""; //错误信息 public function upload($file){ //上传类首先得判断上传存不存在错误,错误信息有123467六种情况,0为正常上传 if($file['error']>0){ $errorMsg="错误信息为:"; switch ($file['error']){ case 1:$errorMsg.="文件大小超过了php.ini中upload_max_filesize选项限制的值"; break; case 2:$errorMsg.="文件大小超过了表单中max_file_size选项指定的值!"; break; case 3:$errorMsg.="文件只有部分被上传!"; break; case 4:$errorMsg.="没有文件被上传!"; break; case 6:$errorMsg.="找不到临时文件夹!"; break; case 7:$errorMsg.="临时文件写入失败"; break; default:$errorMsg.='未知错误!'; break; } return false; } //判断上传的文件是否属于$type内 if(!in_array($file['type'],$this->type)){ //不在所属类型内时 $this->errorMessage="未定义的文件上传类型"; return false; } //判断文件上传的大小不能超过所定义的大小 if($file['size']>$this->maxSize){ $this->errorMessage="超出上传所限制的最大上传容量"; return false; } //给上传的图片重命名 $newFileName=uniqid("php_").strrchr($file['name'],"."); //设置上传文件的全目录 ./uploads/2018-03-03 $allPath1=$this->uploadSavePath."/".date("Y-m-d"); $allPath=$this->uploadSavePath."/".date("Y-m-d")."/".$newFileName; //判断这个目录是否存在 if(!file_exists($allPath1)){ mkdir($allPath1,'0777',true); } //移动 if(!move_uploaded_file($file['tmp_name'],$allPath)){ $this->errorMessage="文件上传失败"; }else{ return $allPath; }; } }3, traitement du téléchargement de fichiers
Appelez la classe pour générer un objet de la classe de téléchargement de fichiers et imprimez le message d'erreur
Modifiez le code dans file_upload_object.php comme suit :<?php /** * Created by PhpStorm. * User: Administrator * Date: 2018/3/3 0003 * Time: 上午 11:33 */ require './FileUpload.class.php'; $file=isset($_FILES['photo'])?$_FILES['photo']:""; $fileUpload=new FileUpload(); $allPath=$fileUpload->upload($file); if(!$allPath){ //上传失败,打印错误信息 echo $fileUpload->errorMessage; //结束运行 die(); } require './file_upload_html.html';Modifiez l'attribut src sur la page html :
Le code est le suivant :
<?php 现有头像:<img src="<?php echo $allFilePath; ?>" onerror="this.src='./default.jpg'">
Cliquez pour sélectionner le fichier, et cliquez sur télécharger après sélection . Les résultats sont les suivants :
Vous pensez : De toute évidence, l'avatar téléchargé est trop grand, comment réduire la taille de l'avatar téléchargé ?
(Voir le didacticiel sur les fichiers et les images [PHP] pour les étapes détaillées des opérations)