当前位置:首页 > PHP教程 > php图像处理 > 列表

新手应该知道的php多图片上传的实现

发布:smiling 来源: PHP粉丝网  添加日期:2022-06-30 08:57:36 浏览: 评论:0 

新手应该知道的php多图片上传的实现

今天在工作中遇到了一个需求:一个表单实现多个上传图片,类似于QQ空间上传照片的模式。即:可以一次性上传多个图片,但是封面图片只有一个。

最先,最重要的事,在服务器上对文件进行读写操作的时候,一定要看权限,如果没有权限,全是虾扯蛋,为什么这样说,因为全是泪。

首先,前端页面:index.html

  1. <html> 
  2.  
  3. <head><title>多个文件上传表单</title></head> 
  4.  
  5. <body> 
  6.  
  7. <style> 
  8.  
  9.     form{ 
  10.  
  11.         margin: 20px; 
  12.  
  13.         padding: 10px; 
  14.  
  15.     } 
  16.  
  17.     #picInput>input{ 
  18.  
  19.         display: block; 
  20.  
  21.         margin: 10px; 
  22.  
  23.     } 
  24.  
  25. </style> 
  26.  
  27. <form action="pic.php" method="post" enctype="multipart/form-data"> 
  28.  
  29.     <input type="hidden" name="MAX_FILE_SIZE" value="1000000"> 
  30.  
  31.     <div id="picInput"> 
  32.  
  33.         上传图片:<input type="file" name='myfile[]'> 
  34.  
  35.     </div> 
  36.  
  37.     <input id="addBtn" type="button" οnclick="addPic1()" value="继续添加图片"><br/><br/> 
  38.  
  39.     <input type="submit" value="上传文件"> 
  40.  
  41. </form> 
  42.  
  43. <script> 
  44.  
  45.     function addPic1(){ 
  46.  
  47.         var addBtn =  document.getElementById('addBtn'); 
  48.  
  49.         var input = document.createElement("input"); 
  50.  
  51.         input.type = 'file'
  52.  
  53.         input.name = 'myfile[]'
  54.  
  55.         var picInut = document.getElementById('picInput'); 
  56.  
  57.         picInut.appendChild(input); 
  58.  
  59.         if(picInut.children.length == 3){ 
  60.  
  61.             addBtn.disabled = 'disabled'
  62.  
  63.         } 
  64.  
  65.     } 
  66.  
  67. </script> 
  68.  
  69. </body> 
  70.  
  71. </html> 

知识点:

1.通过JS动态添加input结点和设置属性,当大于3个上传图片的时候就不再给予上传图片的机会了。

2.这里最主要的是input输入框的name值,通过动态的添加数组元素,将所有上传的图片动态添加到数组当中。

后端处理功能

Connection.php

1.读取和存储都需要用到连接数据库,所以可以把它封住一下,养成良好的习惯

  1. <?php 
  2.  
  3. //创建对象并打开连接,最后一个参数是选择的数据库名称 
  4.  
  5. $mysqli = new mysqli('localhost','root','','test'); 
  6.  
  7. //检查连接是否成功 
  8.  
  9. if (mysqli_connect_errno()){ 
  10.  
  11.     //注意mysqli_connect_error()新特性 
  12.  
  13.     die('Unable to connect!'). mysqli_connect_error(); 
  14.  

pic.php处理功能

  1. <?php 
  2.  
  3. require_once 'connection.php'
  4.  
  5. $file = $_FILES['myfile'];  //得到传输的数据,以数组的形式 
  6.  
  7. $name = $file['name'];      //得到文件名称,以数组的形式 
  8.  
  9. $upload_path = "zhouqi666.cn/test/images/"//上传文件的存放路径 
  10.  
  11. //当前位置 
  12.  
  13. foreach ($name as $k=>$names){ 
  14.  
  15.     $type = strtolower(substr($names,strrpos($names,'.')+1));//得到文件类型,并且都转化成小写 
  16.  
  17.     $allow_type = array('jpg','jpeg','gif','png'); //定义允许上传的类型 
  18.  
  19.     //把非法格式的图片去除 
  20.  
  21.     if (!in_array($type,$allow_type)){ 
  22.  
  23.         unset($name[$k]); 
  24.  
  25.     } 
  26.  
  27.  
  28. $str = ''
  29.  
  30. foreach ($name as $k=>$item){ 
  31.  
  32.     $type = strtolower(substr($item,strrpos($item,'.')+1));//得到文件类型,并且都转化成小写 
  33.  
  34.     if (move_uploaded_file($file['tmp_name'][$k],$upload_path.time().$name[$k])){ 
  35.  
  36.         //$str .= ','.$upload_path.time().$name[$k]; 
  37.  
  38.         echo 'success'
  39.  
  40.     }else
  41.  
  42.         echo 'failed'
  43.  
  44.     } 
  45.  
  46.  
  47. //向指定id插入图片地址(虽然是插入,但是是更新字段,不要迷糊了) 
  48.  
  49. $uid = 1; 
  50.  
  51. $str = substr($str,1); 
  52.  
  53. $sql = "UPDATE upload set pic = '".$str."' WHERE id = ".$uid
  54.  
  55. $result = $mysqli->query($sql); 

这里我有很多的判断没有写,主要是实现一下功能,比如文件夹要先建立好,你也可以自己判断,不存在就创建一个文件夹,还有一些其他判断等等。

最关键的地方是,当你不熟悉的时候,要走一步调试一步,看得到的结果是什么。

图片现实功能

  1. <?php 
  2.  
  3. require_once 'connection.php'
  4.  
  5. $uid = 1; 
  6.  
  7. $sql = "SELECT pic FROM upload WHERE id =".$uid
  8.  
  9. $result = $mysqli->query($sql); 
  10.  
  11. //取出第一个图片的地址 
  12.  
  13. $picpath = ''
  14.  
  15. while ($row = $result->fetch_array()){ 
  16.  
  17.     $picpath = $row[0]; 
  18.  
  19.  
  20. $picpath = explode(',',$picpath)[0]; 
  21.  
  22. echo "<img src='".$picpath."'>"
  23.  
  24. ?> 

感谢大家的阅读,希望大家收益多多。

Tags: php多图片上传

分享到:

相关文章