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("不是一个上传文件!");
}
}
?>
neue Datei
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>多个文件上传表单</title>
<style type="text/css">
input
{
background-color: yellow;
border: 1px inset #CCCCCC;
}
</style>
</head>
<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>
</html>
<?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("不是一个上传文件!");
}
}
?>
Vorschau
Clear
- Kursempfehlungen
- Kursunterlagen herunterladen
Die Kursunterlagen stehen derzeit nicht zum Download zur Verfügung. Die Mitarbeiter organisieren es derzeit. Bitte schenken Sie diesem Kurs in Zukunft mehr Aufmerksamkeit
Auch Studierende, die diesen Kurs gesehen haben, lernen
Lassen Sie uns kurz über die Gründung eines Unternehmens in PHP sprechen
Kurze Einführung in die Web-Frontend-Entwicklung
Umfangreiche, praktische Tianlongbabu-Entwicklung eines Mini-Version-MVC-Frameworks, das die Enzyklopädie-Website mit peinlichen Dingen imitiert
Erste Schritte mit der praktischen PHP-Entwicklung: Schnelle PHP-Erstellung [Small Business Forum]
Anmeldebestätigung und klassisches Message Board
Wissenssammlung über Computernetzwerke
Schnellstart-Node.JS-Vollversion
Der Frontend-Kurs, der Sie am besten versteht: HTML5/CSS3/ES6/NPM/Vue/...[Original]
Schreiben Sie Ihr eigenes PHP-MVC-Framework (40 Kapitel ausführlich/große Details/Muss gelesen werden, damit Neulinge vorankommen)
















