新手應該知道的php多圖片上傳的實現
今天在工作中遇到了一個需求:一個表單實現多個上傳圖片,類似于QQ空間上傳照片的模式。即:可以一次性上傳多個圖片,但是封面圖片只有一個。
最先,最重要的事,在服務器上對文件進行讀寫操作的時候,一定要看權限,如果沒有權限,全是蝦扯蛋,為什么這樣說,因為全是淚。
首先,前端頁面: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>
知識點:
1.通過JS動態添加input結點和設置屬性,當大于3個上傳圖片的時候就不再給予上傳圖片的機會了。
2.這里最主要的是input輸入框的name值,通過動態的添加數組元素,將所有上傳的圖片動態添加到數組當中。
后端處理功能
Connection.php
1.讀取和存儲都需要用到連接數據庫,所以可以把它封住一下,養成良好的習慣
<?php //創建對象并打開連接,最后一個參數是選擇的數據庫名稱 $mysqli = new mysqli('localhost','root','','test'); //檢查連接是否成功 if (mysqli_connect_errno()){ //注意mysqli_connect_error()新特性 die('Unable to connect!'). mysqli_connect_error(); }
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);
這里我有很多的判斷沒有寫,主要是實現一下功能,比如文件夾要先建立好,你也可以自己判斷,不存在就創建一個文件夾,還有一些其他判斷等等。
最關鍵的地方是,當你不熟悉的時候,要走一步調試一步,看得到的結果是什么。
圖片現實功能
<?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."'>"; ?>
感謝大家的閱讀,希望大家收益多多。
本文轉自:https://blog.csdn.net/zmzwll1314/article/details/72673138
推薦教程:《php教程》
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com