引言

在Web开发中,处理文件上传是一个常见的需求。PHP作为服务器端脚本语言,提供了强大的文件上传处理功能。本文将详细介绍如何在PHP中实现表单提交多个文件,并通过实战案例展示如何在实际项目中应用这些技巧。

一、PHP文件上传基础

1.1 文件上传表单

首先,我们需要创建一个HTML表单,允许用户选择多个文件进行上传。以下是一个简单的示例:

<form action="upload.php" method="post" enctype="multipart/form-data"> 选择文件: <input type="file" name="files[]" multiple> <input type="submit" value="上传"> </form> 

这里,enctype="multipart/form-data" 是关键,它告诉浏览器这是一个文件上传表单。

1.2 PHP文件上传处理

在服务器端,我们需要使用PHP来处理上传的文件。以下是一个基本的处理脚本:

<?php if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_FILES['files'])) { $files = $_FILES['files']; foreach ($files['name'] as $key => $name) { $file_tmp = $files['tmp_name'][$key]; $file_size = $files['size'][$key]; $file_error = $files['error'][$key]; $file_type = $files['type'][$key]; $file_ext = strtolower(end(explode('.', $name))); $allowed = array('jpg', 'jpeg', 'png', 'gif', 'pdf'); if (in_array($file_ext, $allowed)) { if ($file_error === 0) { if ($file_size <= 2000000) { $file_name_new = uniqid('', true) . '.' . $file_ext; $file_destination = 'uploads/' . $file_name_new; if (move_uploaded_file($file_tmp, $file_destination)) { echo "文件上传成功: " . $file_destination; } else { echo "文件上传失败"; } } else { echo "文件大小不能超过2MB"; } } else { echo "错误代码: " . $file_error; } } else { echo "不支持的文件类型"; } } } ?> 

二、实战案例:批量图片上传

以下是一个实战案例,展示如何使用PHP实现批量图片上传功能。

2.1 项目结构

/image-upload/ |-- index.php |-- upload.php |-- uploads/ 

2.2 index.php

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>图片上传</title> </head> <body> <form action="upload.php" method="post" enctype="multipart/form-data"> 选择图片: <input type="file" name="files[]" multiple> <input type="submit" value="上传"> </form> </body> </html> 

2.3 upload.php

<?php if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_FILES['files'])) { $files = $_FILES['files']; foreach ($files['name'] as $key => $name) { $file_tmp = $files['tmp_name'][$key]; $file_size = $files['size'][$key]; $file_error = $files['error'][$key]; $file_type = $files['type'][$key]; $file_ext = strtolower(end(explode('.', $name))); $allowed = array('jpg', 'jpeg', 'png', 'gif'); if (in_array($file_ext, $allowed)) { if ($file_error === 0) { if ($file_size <= 2000000) { $file_name_new = uniqid('', true) . '.' . $file_ext; $file_destination = 'uploads/' . $file_name_new; if (move_uploaded_file($file_tmp, $file_destination)) { echo "文件上传成功: " . $file_destination; } else { echo "文件上传失败"; } } else { echo "文件大小不能超过2MB"; } } else { echo "错误代码: " . $file_error; } } else { echo "不支持的文件类型"; } } } ?> 

2.4 uploads/

创建一个名为 uploads 的文件夹,用于存储上传的图片。

三、总结

本文详细介绍了如何在PHP中实现表单提交多个文件,并通过一个实战案例展示了如何在实际项目中应用这些技巧。通过学习和实践,您可以轻松地处理文件上传需求,为您的Web应用增添更多功能。