PHP開發之多個檔案上傳到MySql資料庫(一)
前面的章節我們介紹了用PHP實作上傳一個檔案的教學。
朋友們就會有疑問,怎麼樣才能上傳多張多個檔案到資料庫?
重點在於放入幾個檔案以後點擊提交上傳之後所有的檔案一起上傳,並且每個檔案都給一個新的路徑。
提供一個想法:
先取得每個上傳檔案的資訊放入一個自訂陣列中
<?php $uploadFiles = array(); ?>
然後透過foreach循環顯示出來
<?php foreach($upfile as $key =>$value) { foreach($value as $k => $v){ $uploadFiles[$k][$key]=$v; } } print_r($uploadFiles); ?>
結果展示類似
<?php /* 这里展示同时上传2个文件信息 Array ( [0] => Array ( [name] => 1.png [type] => image/png [tmp_name] => C:\Windows\php82E9.tmp [error] => 0 [size] => 65646 ) [1] => Array ( [name] => 2.png [type] => image/png [tmp_name] => C:\Windows\php82EA.tmp [error] => 0 [size] => 70463 ) ) */ ?>
最後就是把前面章節演示的發布一個文件的限制條件放到循環中進行判斷
##獲取隨機檔案名稱採用了取得當前時間來作為新檔案名稱的前綴,跟著後綴名稱重新組合到資料庫。<?php //上传后的文件名定义(随机获取一个文件名(保持后缀名不变)) $fileinfo = pathinfo($v["name"]);//解析上传文件名字 do{ $newfile = date("Y-m-d,H-i-s") . rand(1000, 9999) . "." . $fileinfo["extension"]; } while (file_exists($path . $newfile)); ?>當然連結資料庫表上傳檔案也是不可或缺的環節
<?php $link = mysqli_connect('localhost','username','password') or die("数据库连接失败!"); mysqli_select_db($link,'test'); mysqli_set_charset($link,'utf8'); $filepath = $path.$newfile; $name = $v['name']; $size = $v['size']; $sql = "insert into img(id,name,size,pic) value(null,'$name','$size','$filepath')"; mysqli_query($link,$sql); mysqli_close($link); ?>
#