Ce que les débutants devraient savoir sur la mise en œuvre de plusieurs téléchargements d'images en PHP
J'ai rencontré une exigence au travail aujourd'hui : a Le formulaire implémente plusieurs téléchargements d'images, similaires au mode de téléchargement de photos dans l'espace QQ. Autrement dit : vous pouvez télécharger plusieurs images à la fois, mais il n’y a qu’une seule image de couverture.
Première et la plus importante, lors de la lecture et de l'écriture de fichiers sur le serveur, vous devez vérifier les autorisations. Si vous n'avez pas d'autorisations, c'est de la connerie. Pourquoi dites-vous ça ? Parce que ce ne sont que des larmes.
Tout d'abord, la page front-end : index.html
<html> <head><title>多个文件上传表单</title></head> <body> <style> form{ margin: 20px; padding: 10px; } #picInput>input{ display: block; margin: 10px; } </style> <form action="pic.php" method="post" enctype="multipart/form-data"> <input type="hidden" name="MAX_FILE_SIZE" value="1000000"> <div id="picInput"> 上传图片:<input type="file" name='myfile[]'> </div> <input id="addBtn" type="button" οnclick="addPic1()" value="继续添加图片"><br/><br/> <input type="submit" value="上传文件"> </form> <script> function addPic1(){ var addBtn = document.getElementById('addBtn'); var input = document.createElement("input"); input.type = 'file'; input.name = 'myfile[]'; var picInut = document.getElementById('picInput'); picInut.appendChild(input); if(picInut.children.length == 3){ addBtn.disabled = 'disabled'; } } </script> </body> </html>
Points de connaissance :
1. Dynamique via JS Ajoutez des nœuds d'entrée et définissez des attributs Lorsqu'il y a plus de 3 images téléchargées, la possibilité de télécharger des images ne sera plus donnée.
2. La chose la plus importante ici est la valeur du nom de la zone de saisie. En ajoutant dynamiquement des éléments du tableau, toutes les images téléchargées sont ajoutées dynamiquement au tableau.
Fonction de traitement backend
Connection.php
1. La lecture et le stockage nécessitent la connexion à la base de données, vous pouvez donc sceller. et développer de bonnes habitudes
<?php //创建对象并打开连接,最后一个参数是选择的数据库名称 $mysqli = new mysqli('localhost','root','','test'); //检查连接是否成功 if (mysqli_connect_errno()){ //注意mysqli_connect_error()新特性 die('Unable to connect!'). mysqli_connect_error(); }
fonction de traitement pic.php
<?php require_once 'connection.php'; $file = $_FILES['myfile']; //得到传输的数据,以数组的形式 $name = $file['name']; //得到文件名称,以数组的形式 $upload_path = "zhouqi666.cn/test/images/"; //上传文件的存放路径 //当前位置 foreach ($name as $k=>$names){ $type = strtolower(substr($names,strrpos($names,'.')+1));//得到文件类型,并且都转化成小写 $allow_type = array('jpg','jpeg','gif','png'); //定义允许上传的类型 //把非法格式的图片去除 if (!in_array($type,$allow_type)){ unset($name[$k]); } } $str = ''; foreach ($name as $k=>$item){ $type = strtolower(substr($item,strrpos($item,'.')+1));//得到文件类型,并且都转化成小写 if (move_uploaded_file($file['tmp_name'][$k],$upload_path.time().$name[$k])){ //$str .= ','.$upload_path.time().$name[$k]; echo 'success'; }else{ echo 'failed'; } } //向指定id插入图片地址(虽然是插入,但是是更新字段,不要迷糊了) $uid = 1; $str = substr($str,1); $sql = "UPDATE upload set pic = '".$str."' WHERE id = ".$uid; $result = $mysqli->query($sql);
J'ai beaucoup de jugements que je n'ai pas écrits ici, principalement pour implémenter les fonctions. Par exemple, le dossier doit être créé en premier, et vous pouvez également le juger vous-même, créer un dossier s'il n'existe pas, et porter d'autres jugements, etc.
Le plus important est que lorsque vous ne le connaissez pas, vous devez le déboguer étape par étape pour voir quels sont les résultats.
Fonction réalité image
<?php require_once 'connection.php'; $uid = 1; $sql = "SELECT pic FROM upload WHERE id =".$uid; $result = $mysqli->query($sql); //取出第一个图片的地址 $picpath = ''; while ($row = $result->fetch_array()){ $picpath = $row[0]; } $picpath = explode(',',$picpath)[0]; echo "<img src='".$picpath."'>"; ?>
Merci d'avoir lu, j'espère que vous en bénéficierez beaucoup.
Cet article est reproduit à partir de : https://blog.csdn.net/zmzwll1314/article/details/72673138
Tutoriel recommandé : "Tutoriel php"
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!