PHP實(shí)現(xiàn)多張圖片上傳功能的示例代碼
首先要知道這個(gè)函數(shù)
move_uploaded_file();
接下來是我們的input框,和我們的html頁面
這里我們是增加的input框我們也可以寫寫一個(gè)屬性 multiple="multiple" 這樣就可以ctrl多選圖片了
<html> <head><title>多個(gè)文件上傳表單</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" onclick="addPic1()" value="繼續(xù)添加圖片"><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>
PHP向后臺(tái)插入圖片方法和之前不一樣了。
<meta charset="UTF-8"> <?php $dbhost = 'localhost:3306'; // mysql服務(wù)器主機(jī)地址 $dbuser = 'root'; // mysql用戶名 $dbpass = 'root'; // mysql用戶名密碼 $conn = mysqli_connect($dbhost, $dbuser, $dbpass); if(! $conn ) { die('連接失敗: ' . mysqli_error($conn)); } // 設(shè)置編碼,防止中文亂碼 mysqli_query($conn , "set names utf8"); mysqli_select_db( $conn, 'image' ); $file = $_FILES['myfile']; //得到傳輸?shù)臄?shù)據(jù),以數(shù)組的形式 $name = $file['name']; //得到文件名稱,以數(shù)組的形式 $upload_path = "img/"; //上傳文件的存放路徑 //當(dāng)前位置 foreach ($name as $key=>$names){//foreach將$name也就是我們所有圖片的name的鍵值對(duì)輸出, /* * strtolower()將內(nèi)容轉(zhuǎn)為小寫, * substr() 方法可在字符串中抽取從 start 下標(biāo)開始的指定數(shù)目的字符。這個(gè)是獲取我們name的最后一的路徑。要抽取的子串的起始下標(biāo)。必須是數(shù)值。如果是負(fù)數(shù),那么該參數(shù)聲明從字符串的尾部開始算起的位置。也就是說,-1 指字符串中最后一個(gè)字符 * * */ $type = strtolower(substr($names,strrpos($names,'.')+1));//得到文件類型,并且都轉(zhuǎn)化成小寫 $allow_type = array('jpg','jpeg','gif','png'); //定義允許上傳的類型 //把非法格式的圖片去除 if (!in_array($type,$allow_type)){//檢測(cè)圖片后綴是否正確 unset($name[$key]);//函數(shù),參數(shù)為name的值也就是圖片的name值。 } } $str = '';//空字符串 foreach ($name as $key=>$item){//獲取圖片的時(shí)間; $type = strtolower(substr($item,strrpos($item,'.')+1));//得到文件類型,并且都轉(zhuǎn)化成小寫 if (move_uploaded_file($file['tmp_name'][$key],$upload_path.time().$name[$key])){ $str .= ','.$upload_path.time().$name[$key];//將圖片拼接一個(gè)當(dāng)前時(shí)間 }else{ // echo '錯(cuò)誤'; } } //向指定id插入圖片地址(雖然是插入,但是是更新字段,不要迷糊了) $uid = 1;//格式 $str = substr($str,1);//最后的值給$str然后將內(nèi)容插入數(shù)據(jù)庫 $sql = "INSERT INTO img ". "(name) ". "VALUES ". "('$str')"; $retval = mysqli_query( $conn, $sql ); if(! $retval ) { die('無法插入數(shù)據(jù): ' . mysqli_error($conn)); } echo "數(shù)據(jù)插入成功"; mysqli_close($conn); ?>
插入成功之后然后讀取,和之前也不一樣。我們要分解字段,然后將我們的圖片循環(huán)輸出出來。
<meta charset="UTF-8"> <style> .image{ width: 150px; height: 150px; } </style> <?php $dbhost = 'localhost:3306'; // mysql服務(wù)器主機(jī)地址 $dbuser = 'root'; // mysql用戶名 $dbpass = 'root'; // mysql用戶名密碼 $conn = mysqli_connect($dbhost, $dbuser, $dbpass); if(! $conn ) { die('連接失敗: ' . mysqli_error($conn)); } // 設(shè)置編碼,防止中文亂碼 mysqli_query($conn , "set names utf8"); mysqli_select_db( $conn, 'image' ); $sql = 'SELECT name FROM img';//查詢數(shù)據(jù)庫內(nèi)容 $retval = mysqli_query( $conn, $sql ); if(! $retval ) { die('無法讀取數(shù)據(jù): ' . mysqli_error($conn)); } $picpath = '';//聲明空字符串 while($row = mysqli_fetch_array($retval)){ $picpath = $row[0];//循環(huán)我們的第一個(gè)字段下面有打印,可查看。 // var_dump($picpath);exit; } $picpath = explode(',',$picpath);//分解指示符,將我們一個(gè),分為一個(gè)數(shù)組。分為一部分。//下面可打印 // var_dump($picpath);exit; $acs='';//聲明空字符串 for($i=0; $i<count($picpath); $i++){//將$picpath內(nèi)容,也就是每個(gè)圖片的路徑讀取出來。 $acs=$picpath[$i];//將內(nèi)容賦給我們的變量空。的字符串。 echo "<img class='image' src='".$acs."'>";//在img中運(yùn)行。 } mysqli_close($conn); ?>
到此這篇關(guān)于PHP實(shí)現(xiàn)多張圖片上傳功能的示例代碼的文章就介紹到這了,更多相關(guān)PHP多張圖片上傳內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
PHP圖片處理之使用imagecopyresampled函數(shù)實(shí)現(xiàn)圖片縮放例子
這篇文章主要介紹了PHP圖片處理之使用imagecopyresampled函數(shù)實(shí)現(xiàn)圖片縮放例子,本文先是講解了imagecopyresampled函數(shù)的相關(guān)知識(shí),然后給出了實(shí)現(xiàn)代碼例子,需要的朋友可以參考下2014-11-11PHP實(shí)現(xiàn)redis限制單ip、單用戶的訪問次數(shù)功能示例
這篇文章主要介紹了PHP實(shí)現(xiàn)redis限制單ip、單用戶的訪問次數(shù)功能,結(jié)合實(shí)例形式分析了php連接redis及獲取、記錄客戶端信息,并限制客戶訪問次數(shù)等操作技巧,需要的朋友可以參考下2018-06-06php的PDO事務(wù)處理機(jī)制實(shí)例分析
這篇文章主要介紹了php的PDO事務(wù)處理機(jī)制,結(jié)合實(shí)例形式分析了事務(wù)的原理、功能及PDO處理事務(wù)的具體操作步驟與實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-02-02