Maison  >  Article  >  développement back-end  >  Comment implémenter la fonction de téléchargement d'image en php

Comment implémenter la fonction de téléchargement d'image en php

藏色散人
藏色散人original
2020-08-19 10:35:145337parcourir

Comment PHP implémente la fonction de téléchargement d'images : créez d'abord un dossier pour stocker les images ; puis créez la partie HTML ; puis créez le fichier "uploadHandler.php" et enfin comparez le format d'image du fichier avec les éléments qu'il contient ; le tableau et téléchargez-le simplement.

Comment implémenter la fonction de téléchargement d'image en php

Recommandé : "Tutoriel vidéo PHP"

Opération de téléchargement d'images en PHP

  Dans la programmation frontale, nous devons parfois permettre aux téléspectateurs de télécharger une certaine image. Nous pouvons implémenter cette fonction via PHP.

1. Créez un dossier pour stocker les images

  Ici, nous créons le dossier « fichier » pour stocker les images téléchargées par l'utilisateur. À ce moment, le dossier est vide, et le dossier. l'adresse de création peut être C'est votre choix, mais il est préférable de la construire dans un endroit facilement accessible.

2. Créez la partie HTML (uploadfile.html)

  Ici, nous utilisons la balise form form du HTML, et le code

<input type="file">来选择图片文件
<input type="submit">来提交图片相关信息

dans le formulaire est le suivant :

<!DOCTYPE html>
<html>
 <head>
  <meta charset="UTF-8">
  <title></title>
 </head>
 <body> 
  <form action="uploadHandler.php" method="post" enctype="multipart/form-data">
   Upload Img:<input type="file" name="img"/>
   <input type="submit" value="Upload"/>
  </form>
 </body>
</html>

Remarque :

1. L'action dans le formulaire est connectée au fichier .php qui sera créé ultérieurement pour gérer le téléchargement d'images.

  2. Enctype="multipart/form-data" doit être noté dans l'attribut form. L'attribut enctype spécifie comment les données du formulaire sont codées avant d'être envoyées au serveur. multipart/form-data n'encode pas les caractères. Cette valeur est obligatoire lors de l'utilisation d'un formulaire avec un contrôle de téléchargement de fichier.

  3. Ici, nous utilisons la méthode post.

3. Créez la partie PHP (uploadHandler.php)

1. Principe

  Nous créons un fichier php et entrons seulement

<?php var_dump($_FILES);  ?>

   Ensuite, nous A le tableau correspondant arr(1) sera imprimé.

  La structure du tableau de arr(1) est :

array(1) { 
 ["img"]=> array(5) { 
  ["name"]=> string(**) "AAAAAAA.jpg" // 图片名
  ["type"]=> string(10) "image/jpeg" // 图片格式
  ["tmp_name"]=> string(45) "/Applications/XAMPP/xamppfiles/temp/phpVZQY0m" // 图片缓存地址
  ["error"]=> int(0) // 上传图片错误数
  ["size"]=> int(124246) // 图片大小
 } 
}

  Il y a un élément ["img"] sous le tableau tableau, et sous ["img"] c'est un élément bidimensionnel tableau, ce Le tableau bidimensionnel comporte cinq éléments, à savoir : nom / type / nom_tmp / erreur / taille.

 Grâce à ces attributs, nous obtenons les informations de base d'une image. Ensuite, nous devons juger ces attributs de base et enregistrer l'image dans un dossier.

2. Fonctionnement réel

  Faites le jugement suivant :

erreur [Oui] : erreur d'invite ❌

erreur [Non] : étape suivante✅

     ╙type[non-img] : erreur d'invite ❌

    ╙type[img] : étape suivante✅

    ╙type[non-jpeg] : erreur d'invite ❌

ˆ ˆ ˆ╙type[jpeg] : Étape suivante✅

˜ Si les jugements ci-dessus sont satisfaits, alors nous pensons que cette image peut être enregistrée.

  Pour éviter la duplication du nom des images, nous utilisons le concept d'horodatage pour les fusionner en un nouveau nom de fichier afin que chaque image porte un nom unique.

  Et nous pouvons créer un tableau, les éléments du tableau sont différents formats d'image, comparez le format d'image du fichier avec les éléments du tableau, les formats d'image que nous ne reconnaissons pas ne seront pas enregistrés.

Le code est le suivant :

<?php
// 接收文件
var_dump($_FILES); // 区别于$_POST、$_GET
print_r($_FILES);
$file = $_FILES["img"];
// 先判断有没有错
if ($file["error"] == 0) {
 // 成功 
 // 判断传输的文件是否是图片,类型是否合适
 // 获取传输的文件类型
 $typeArr = explode("/", $file["type"]);
 if($typeArr[0]== "image"){
  // 如果是图片类型
  $imgType = array("png","jpg","jpeg");
  if(in_array($typeArr[1], $imgType)){ // 图片格式是数组中的一个
   // 类型检查无误,保存到文件夹内
   // 给图片定一个新名字 (使用时间戳,防止重复)
   $imgname = "file/".time().".".$typeArr[1];
   // 将上传的文件写入到文件夹中
   // 参数1: 图片在服务器缓存的地址
   // 参数2: 图片的目的地址(最终保存的位置)
   // 最终会有一个布尔返回值
   $bol = move_uploaded_file($file["tmp_name"], $imgname);
   if($bol){
    echo "上传成功!";
   } else {
    echo "上传失败!";
   };
  };
 } else {
  // 不是图片类型
  echo "没有图片,再检查一下吧!";
 };
} else {
 // 失败
 echo $file["error"];
};
?>

IV. Télécharger des photos

  À ce stade, si tout répond aux exigences, les photos que nous avons téléchargées seront stockées dans le fichier. dossier . Téléchargement réussi !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
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