PHP开发之多个文件上传到MySql数据库(二)
首先还是要制作一个HTML页面使用<form>表单
<body> <form action="tu5.php" method="post" enctype="multipart/form-data"> 上传文件:<br><br> <input type="hidden" name="MAX_FILE_SIZE" value="1000000"> 第一张图:<input type="file" name='myfile[]'><br><br> 第二张图:<input type="file" name='myfile[]'><br><br> <input style="margin-left: 8%;" type="submit" value="上传"> </form> </body>
这里我们演示一次上传2张图片。

可以通过点击两个“选择文件”按键选择两张图片,然后点击“上传”一次把两张图片上传。
展示完整的PHP后端功能代码:
<?php
echo "<pre>";
echo "<hr/>";
//1.获取上传文件信息
$upfile = $_FILES["myfile"];
$typelist = array("image/jpeg","image/jpg","image/png","image/gif"); //定义允许的类型
$path="uploads/"; //定义一个上传过后的目录
//重新组装上传文件的数据,以便依次上传
$uploadFiles = array();
foreach($upfile as $key =>$value) {
foreach($value as $k => $v){
$uploadFiles[$k][$key]=$v;
}
}
//遍历上传
foreach($uploadFiles as $k => $v) {
//2. 过滤上传文件的错误号
if ($v['error'] > 0) {
//获取错误信息
switch ($v['error']) {
case 1:
$info = "上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。";
break;
case 2:
$info = "上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。";
break;
case 3:
$info = "文件只有部分被上传。";
break;
case 4:
$info = "没有文件被上传。 ";
case 6:
$info = "找不到临时文件夹。";
break;
case 7:
$info = "文件写入失败";
break;
}
die("上传文件{$k}错误,原因:" . $info);
}
//3. 本次上传文件到小的过滤(自己选择)
if ($v['size'] > 100000) {
die('上传文件{$k}大小超出限制!');
}
//4. 类型过滤
if (!in_array($v["type"], $typelist)) {
die("上传文件{$k}类型非法!" . $v["type"]);
}
//5. 上传后的文件名定义(随机获取一个文件名(保持后缀名不变))
$fileinfo = pathinfo($v["name"]);//解析上传文件名字
do{
$newfile = date("Y-m-d,H-i-s") . rand(1000, 9999) . "." . $fileinfo["extension"];
} while (file_exists($path . $newfile));
//6. 执行文件上传
//判断是否是一个上传的文件
if (is_uploaded_file($v["tmp_name"])) {
//执行文件上传(移动上传文件)
if (move_uploaded_file($v["tmp_name"], $path . $newfile)) {
//echo "文件{$K}上传成功!";
//执行写入数据库操作
$link = mysqli_connect('localhost','root','root') or die("数据库连接失败!");
$db = 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);
} else {
die("上传文件{$k}失败");
}
} else {
die("不是一个上传文件!");
}
}
?>
