PHP单文件和多文件上传实例
发布时间:2023-05-17 23:31:32
PHP是一种非常流行的Web开发语言,可以轻松地实现文件上传功能。本文将介绍PHP的单文件上传和多文件上传。
单文件上传
首先,我们来看看如何使用PHP上传单个文件。以下是一个简单的例子:
<form action="upload.php" method="post" enctype="multipart/form-data"> <input type="file" name="fileToUpload"> <input type="submit" value="Upload File" name="submit"> </form>
上述代码创建了一个HTML表单,其中包含一个文件选择输入框和一个提交按钮。当用户上传文件时,表单将被提交到名为“upload.php”的PHP文件中。
接下来,我们来看看upload.php文件的代码:
<?php
if(isset($_POST["submit"])) {
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
// 检查文件是否是图像文件类型
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
echo "只能上传JPG、JPEG、PNG和GIF文件!";
$uploadOk = 0;
}
// 检查文件是否已存在
if (file_exists($target_file)) {
echo "对不起,文件已存在!";
$uploadOk = 0;
}
// 检查文件大小
if ($_FILES["fileToUpload"]["size"] > 500000) {
echo "对不起,文件太大了!";
$uploadOk = 0;
}
// 如果上传成功,则将文件移动到uploads目录中
if ($uploadOk == 0) {
echo "对不起,文件无法上传!";
} else {
if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
echo "文件" . basename( $_FILES["fileToUpload"]["name"]). "已成功上传!";
} else {
echo "对不起,文件上传出错!";
}
}
}
?>
upload.php文件首先检查用户是否单击了提交按钮,并根据情况检查所上传的文件。如果文件类型、大小或名称问题,则将显示错误消息。如果文件可以上传,则将其移动到名为“uploads”的文件夹中。
多文件上传
现在我们来看看如何使用PHP上传多个文件。以下是一个简单的例子:
<form action="upload.php" method="post" enctype="multipart/form-data"> <input type="file" name="filesToUpload[]" multiple> <input type="submit" value="Upload Files" name="submit"> </form>
上述代码创建了一个HTML表单,其中包含一个文件选择输入框和一个提交按钮。由于我们要上传多个文件,因此我们需要在文件选择框的名称中使用一个数组。
接下来,我们来看看upload.php文件的代码:
<?php
if(isset($_POST["submit"])){
$target_dir = "uploads/";
$uploadOk = 1;
$allowedTypes = array("jpg", "jpeg", "png", "gif");
// 通过循环处理每个文件
foreach($_FILES["filesToUpload"]["tmp_name"] as $key=>$tmp_name) {
// 获取文件属性
$file_name = $_FILES["filesToUpload"]["name"][$key];
$file_tmp = $_FILES["filesToUpload"]["tmp_name"][$key];
$file_type = $_FILES["filesToUpload"]["type"][$key];
$file_size = $_FILES["filesToUpload"]["size"][$key];
$file_ext = strtolower(pathinfo($file_name, PATHINFO_EXTENSION));
// 检查文件类型和大小
if(!in_array($file_ext,$allowedTypes)) {
echo "文件".$file_name."只能上传JPG、JPEG、PNG和GIF文件!";
$uploadOk = 0;
}
if($file_size > 500000) {
echo "文件".$file_name."太大了!";
$uploadOk = 0;
}
// 如果上传成功,则将文件移动到uploads目录中
if($uploadOk == 1) {
$file_newname = uniqid().".".$file_ext;
move_uploaded_file($file_tmp,$target_dir.$file_newname);
echo "文件".$file_name."上传成功!<br>";
}
}
}
?>
upload.php文件首先检查用户是否单击了提交按钮,并通过循环处理每个上传的文件。对于每个文件,它检查文件类型、大小,如果一切正常,则将文件上传到名为“uploads”的文件夹中。该文件的名称将使用 的ID和文件扩展名来生成。
结论
PHP的文件上传功能非常强大,可以轻松地实现单个或多个文件的上传。只需根据需要调整一些参数和函数,即可创建定制的上传功能。但是,记住要小心处理上传的文件,以确保安全性。
