$_FILES
是 PHP 中用于处理 HTTP 文件上传的全局数组。当客户端通过 HTML 表单使用 method="post"
和 enctype="multipart/form-data"
提交文件时,PHP 会自动将上传的文件信息存储在 $_FILES
数组中。
$_FILES
数组包含以下键值对:
name
:客户端上传文件的原始名称。type
:文件的 MIME 类型。size
:文件的大小(以字节为单位)。tmp_name
:文件在服务器上临时存储的名称。error
:上传过程中发生的错误代码。$_FILES
原因:
enctype="multipart/form-data"
。method="post"
。file_uploads
设置为 Off
。解决方法: 确保 HTML 表单正确设置:
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="fileToUpload" id="fileToUpload">
<input type="submit" value="Upload File" name="submit">
</form>
检查 php.ini
文件中的 file_uploads
设置:
file_uploads = On
$_FILES['error']
不为 0原因:
upload_max_filesize
或 post_max_size
限制。解决方法:
检查 php.ini
文件中的相关设置:
upload_max_filesize = 2M
post_max_size = 8M
确保 PHP 有权限写入临时目录:
chmod 777 /path/to/temp/directory
限制允许上传的文件类型:
$allowed_types = array('image/jpeg', 'image/png');
if (!in_array($_FILES['fileToUpload']['type'], $allowed_types)) {
die("Invalid file type.");
}
以下是一个简单的文件上传处理示例:
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
// 检查文件是否上传成功
if (isset($_POST["submit"])) {
$uploadOk = 1;
} else {
echo "Sorry, there was an error uploading your file.";
$uploadOk = 0;
}
// 检查文件大小
if ($_FILES["fileToUpload"]["size"] > 500000) {
echo "Sorry, your file is too large.";
$uploadOk = 0;
}
// 允许特定文件格式
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
$uploadOk = 0;
}
// 检查是否设置了上传文件
if (empty($_FILES["fileToUpload"]["name"])) {
echo "Sorry, no file selected.";
$uploadOk = 0;
}
// 检查是否有错误
if ($_FILES["fileToUpload"]["error"] > 0) {
echo "Return Code: " . $_FILES["fileToUpload"]["error"] . "<br>";
$uploadOk = 0;
}
// 检查文件是否已经存在
if (file_exists($target_file)) {
echo "Sorry, file already exists.";
$uploadOk = 0;
}
// 检查目录权限
if (!is_dir($target_dir)) {
mkdir($target_dir, 0777, true);
}
// 尝试上传文件
if ($uploadOk == 0) {
echo "Sorry, your file was not uploaded.";
} else {
if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
echo "The file ". htmlspecialchars( basename( $_FILES["fileToUpload"]["name"])). " has been uploaded.";
} else {
echo "Sorry, there was an error uploading your file.";
}
}
}
?>
希望这些信息对你有所帮助!
没有搜到相关的文章