PHP 개발 시 MySql 데이터베이스에 여러 파일 업로드(2)
먼저 <form> 양식을 사용하여 HTML 페이지를 만들어야 합니다
<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("不是一个上传文件!");
}
}
?>
새로운 파일
<!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("不是一个上传文件!");
}
}
?>
시사
Clear
- 코스 추천
- 코스웨어 다운로드
현재 코스웨어를 다운로드할 수 없습니다. 현재 직원들이 정리하고 있습니다. 앞으로도 본 강좌에 많은 관심 부탁드립니다~
이 강좌를 시청한 학생들도 학습하고 있습니다.
PHP로 사업을 시작하는 방법에 대해 간단히 이야기해 보겠습니다.
웹 프론트 엔드 개발에 대한 빠른 소개
민망한 물건 백과사전 사이트를 모방한 Mini 버전 MVC 프레임워크의 대규모 실용 Tianlongbabu 개발
PHP 실용 개발 시작하기: 빠른 PHP 생성 [중소기업 포럼]
로그인 인증 및 클래식 게시판
컴퓨터 네트워크 지식 수집
빠른 시작 Node.JS 정식 버전
당신을 가장 잘 이해하는 프론트엔드 강좌: HTML5/CSS3/ES6/NPM/Vue/...[원본]
자신만의 PHP MVC 프레임워크 작성(깊이 있는 40개 장/자세한 내용/초보자가 발전하려면 읽어야 함)
















