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); ?>