新手應該知道的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."' alt="新手應該知道的php多圖片上傳的實現" >"; ?>
感謝大家的閱讀,希望大家能回報多多。
本文轉自:https://blog.csdn.net/zmzwll1314/article/details/72673138
推薦教學:《php教學》
以上是新手應該知道的php多圖片上傳的實現的詳細內容。更多資訊請關注PHP中文網其他相關文章!

php把负数转为正整数的方法:1、使用abs()函数将负数转为正数,使用intval()函数对正数取整,转为正整数,语法“intval(abs($number))”;2、利用“~”位运算符将负数取反加一,语法“~$number + 1”。

实现方法:1、使用“sleep(延迟秒数)”语句,可延迟执行函数若干秒;2、使用“time_nanosleep(延迟秒数,延迟纳秒数)”语句,可延迟执行函数若干秒和纳秒;3、使用“time_sleep_until(time()+7)”语句。

php除以100保留两位小数的方法:1、利用“/”运算符进行除法运算,语法“数值 / 100”;2、使用“number_format(除法结果, 2)”或“sprintf("%.2f",除法结果)”语句进行四舍五入的处理值,并保留两位小数。

判断方法:1、使用“strtotime("年-月-日")”语句将给定的年月日转换为时间戳格式;2、用“date("z",时间戳)+1”语句计算指定时间戳是一年的第几天。date()返回的天数是从0开始计算的,因此真实天数需要在此基础上加1。

php判断有没有小数点的方法:1、使用“strpos(数字字符串,'.')”语法,如果返回小数点在字符串中第一次出现的位置,则有小数点;2、使用“strrpos(数字字符串,'.')”语句,如果返回小数点在字符串中最后一次出现的位置,则有。

php字符串有下标。在PHP中,下标不仅可以应用于数组和对象,还可应用于字符串,利用字符串的下标和中括号“[]”可以访问指定索引位置的字符,并对该字符进行读写,语法“字符串名[下标值]”;字符串的下标值(索引值)只能是整数类型,起始值为0。

方法:1、用“str_replace(" ","其他字符",$str)”语句,可将nbsp符替换为其他字符;2、用“preg_replace("/(\s|\ \;||\xc2\xa0)/","其他字符",$str)”语句。

在php中,可以使用substr()函数来读取字符串后几个字符,只需要将该函数的第二个参数设置为负值,第三个参数省略即可;语法为“substr(字符串,-n)”,表示读取从字符串结尾处向前数第n个字符开始,直到字符串结尾的全部字符。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

Dreamweaver Mac版
視覺化網頁開發工具

記事本++7.3.1
好用且免費的程式碼編輯器

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器