用php写个多文件上传的网页
时间: 2024-03-12 22:43:23 浏览: 127
好的,以下是一个示例代码,可以实现多文件上传的功能:
```php
<!DOCTYPE html>
<html>
<head>
<title>多文件上传</title>
</head>
<body>
<form action="upload.php" method="post" enctype="multipart/form-data">
<label for="file">选择文件:</label>
<input type="file" name="file[]" id="file" multiple><br><br>
<input type="submit" name="submit" value="上传">
</form>
</body>
</html>
```
在这个示例代码中,我们使用了HTML5中的`multiple`属性,可以让用户选择并上传多个文件。`name`属性的值为`file[]`,表示上传的是一个文件数组。
接下来,我们需要编写一个`upload.php`文件,来处理文件上传的逻辑。以下是一个示例代码:
```php
<?php
// 上传目录
$upload_dir = 'uploads/';
// 如果上传目录不存在,创建它
if (!file_exists($upload_dir)) {
mkdir($upload_dir, 0777, true);
}
// 循环处理每个上传的文件
foreach ($_FILES['file']['name'] as $key => $name) {
$tmp_name = $_FILES['file']['tmp_name'][$key];
$size = $_FILES['file']['size'][$key];
$type = $_FILES['file']['type'][$key];
// 如果上传的文件为空,跳过
if (empty($name)) {
continue;
}
// 获取上传的文件名和扩展名
$filename = pathinfo($name, PATHINFO_FILENAME);
$ext = pathinfo($name, PATHINFO_EXTENSION);
// 生成唯一的文件名
$new_filename = $filename . '_' . uniqid() . '.' . $ext;
// 移动上传的文件到目标目录
move_uploaded_file($tmp_name, $upload_dir . $new_filename);
}
echo '文件上传成功!';
?>
```
在这个示例代码中,我们首先定义了一个上传目录`$upload_dir`,如果这个目录不存在,我们会使用`mkdir()`函数创建它。然后,我们使用`foreach`循环遍历上传的每个文件,获取每个文件的临时文件名、大小和类型。
如果上传的文件为空,我们会跳过这个文件。否则,我们会使用`pathinfo()`函数获取这个文件的文件名和扩展名,然后使用`uniqid()`函数生成一个唯一的文件名,最后使用`move_uploaded_file()`函数将上传的文件移动到目标目录。
需要注意的是,我们在HTML表单中设置了`enctype="multipart/form-data"`,这是因为上传文件需要使用`POST`方法,并且需要使用`multipart/form-data`编码类型。在PHP中,我们可以通过`$_FILES`超全局数组来获取上传的文件信息。
希望这个示例代码能够帮助到您!
阅读全文