What novices should know about the implementation of multiple image uploads in PHP
I encountered a need at work today: a The form implements multiple upload pictures, similar to the mode of uploading photos in QQ space. That is: you can upload multiple images at one time, but there is only one cover image.
First and most important thing, when reading and writing files on the server, you must check the permissions. If you don't have permissions, it's all bullshit. Why do you say this? Because it's all tears.
First, the front-end page: 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>
Knowledge points:
1. Dynamic through JS Add input nodes and set attributes. When there are more than 3 uploaded images, the opportunity to upload images will no longer be given.
#2. The most important thing here is the name value of the input input box. By dynamically adding array elements, all uploaded images are dynamically added to the array.
Back-end processing function
Connection.php
1. Both reading and storage require the connection to the database, so you can Seal it and develop good habits
<?php //创建对象并打开连接,最后一个参数是选择的数据库名称 $mysqli = new mysqli('localhost','root','','test'); //检查连接是否成功 if (mysqli_connect_errno()){ //注意mysqli_connect_error()新特性 die('Unable to connect!'). mysqli_connect_error(); }
pic.php processing function
<?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);
I have a lot of judgments that I haven’t written here, mainly to implement the functions. For example, the folder must be created first, and you can also judge it yourself, create a folder if it does not exist, and make other judgments, etc.
The most important thing is that when you are not familiar with it, you have to debug it step by step to see what the results are.
Picture reality function
<?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."'>"; ?>
Thank you everyone for reading, I hope you will benefit a lot.
This article is reproduced from: https://blog.csdn.net/zmzwll1314/article/details/72673138
Recommended tutorial: "php tutorial"
The above is the detailed content of What novices should know about the implementation of multiple image uploads in PHP. For more information, please follow other related articles on the PHP Chinese website!