PHP開發(fā)之多個文件上傳到MySql數(shù)據(jù)庫(一)
前面的章節(jié)我們介紹了用PHP實(shí)現(xiàn)上傳一個文件的教程。
朋友們就會有疑問,怎么樣才能上傳多張多個文件到數(shù)據(jù)庫?
重點(diǎn)在于放入幾個文件以后點(diǎn)擊提交上傳之后所有的文件一起上傳,并且每個文件都給一個新的路徑。
提供一種思路:
先獲取每個上傳文件的信息放入一個自定義數(shù)組中
<?php $uploadFiles = array(); ?>
然后通過foreach循環(huán)顯示出來
<?php foreach($upfile as $key =>$value) { foreach($value as $k => $v){ $uploadFiles[$k][$key]=$v; } } print_r($uploadFiles); ?>
結(jié)果展示類似
<?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 ) ) */ ?>
最后就是把前面章節(jié)演示的發(fā)布一個文件的限制條件放到循環(huán)中進(jìn)行判斷
獲取隨機(jī)文件名采用了獲取當(dāng)前時間來作為新文件名的前綴,跟后綴名重新組合到數(shù)據(jù)庫。
<?php //上傳后的文件名定義(隨機(jī)獲取一個文件名(保持后綴名不變)) $fileinfo = pathinfo($v["name"]);//解析上傳文件名字 do{ $newfile = date("Y-m-d,H-i-s") . rand(1000, 9999) . "." . $fileinfo["extension"]; } while (file_exists($path . $newfile)); ?>
當(dāng)然鏈接數(shù)據(jù)庫表上傳文件也是必不可少的環(huán)節(jié)
<?php $link = mysqli_connect('localhost','username','password') or die("數(shù)據(jù)庫連接失敗!"); 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); ?>