在html没有出来之前,要实现php多文件上传比较麻烦,需要在form表单里面添加多个input file域。html5发布以后,我们可以使用input file的html5属性multiple来实现多文件上传,需要的朋友可以参考下
在PHP与HTML5结合的应用中,多文件上传功能极大地简化了从前复杂的实现方式。在HTML5之前,要实现多文件上传,需要在HTML表单中为每个文件添加一个单独的`<input type="file">`元素,这既不美观也不方便用户操作。然而,HTML5引入了一个新的属性——`multiple`,使得在一个输入框内可以选择多个文件进行上传。
`multiple`属性定义和用法:
`multiple`属性用于规定输入字段可接受多个值。当在`<input type="file">`元素上使用此属性时,用户可以在文件选择对话框中选择多个文件。例如:
```html
<form action="demo_form.asp" method="get">
Select images:
<input type="file" name="img" multiple="multiple" />
<input type="submit" />
</form>
```
在这个例子中,用户可以选择并上传多个图像文件。
接下来,我们将详细讲解如何在PHP中处理这些由HTML5表单提交的多文件。
HTML5多文件上传实例代码:
在HTML部分,我们需要创建一个包含`multiple`属性的`<input type="file">`元素,这样用户就可以选择多个文件进行上传。同时,表单需要设置`enctype="multipart/form-data"`,以便能够处理文件数据。
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<form action="my_parser.php" method="post" enctype="multipart/form-data">
<p><input name="upload[]" type="file" multiple="multiple" /></p>
<input type="submit" value="Upload all files">
</form>
</body>
</html>
```
这里,`name`属性设置为`upload[]`,表示将接收的文件数组作为PHP的数组处理。
PHP处理多文件上传的代码:
在服务器端,我们使用PHP来接收和处理这些上传的文件。以下是一个简单的示例:
```php
<?php
for ($i = 0; $i < count($_FILES['upload']['name']); $i++) {
// 获取临时文件路径
$tmpFilePath = $_FILES['upload']['tmp_name'][$i];
// 确保有一个文件路径
if ($tmpFilePath != "") {
// 设置新文件路径
$newFilePath = "./uploadFiles/" . $_FILES['upload']['name'][$i];
// 将文件移动到临时目录
if (move_uploaded_file($tmpFilePath, $newFilePath)) {
// 在这里处理其他代码,如数据库记录或错误检查
}
}
}
?>
```
在这个PHP代码中,我们通过循环遍历`$_FILES`全局数组的子数组`'upload'`,获取每个上传文件的临时路径、名称等信息。然后,我们尝试将文件从临时目录移动到服务器上的目标位置。如果移动成功,可以根据需要执行其他操作,如记录文件信息、检查文件类型或大小限制等。
HTML5的`multiple`属性与PHP结合,使得多文件上传变得更加便捷。用户只需在一个输入框中选取多个文件,后端服务器再通过PHP进行处理,大大提高了用户体验和开发效率。但要注意,处理上传文件时,应确保有适当的安全措施,比如验证文件类型和大小,以防止恶意文件的上传。