PHP文件上传函数详解:move_uploaded_file,is_uploaded_file,$_FILES
在 Web 开发中,文件上传是一个常见的需求。PHP 提供了一些函数和变量来处理文件上传。本文将介绍 PHP 文件上传函数中的三个重要部分:move_uploaded_file,is_uploaded_file 和 $ _FILES。
1. move_uploaded_file
move_uploaded_file 函数用于将上传的文件移动到服务器上的目标位置。它的语法如下:
bool move_uploaded_file ( string $filename , string $destination )
$filename是已上传文件的临时文件名,$destination是目标文件的路径和名称。
该函数的返回值为布尔值:如果文件成功移动,则返回 true,否则返回 false。
注意:在使用该函数移动文件之前,我们必须确保目标位置可写。
2. is_uploaded_file
is_uploaded_file 函数用于检查文件是否是通过 HTTP POST 上传的。它的语法如下:
bool is_uploaded_file ( string $filename )
该函数的返回值为布尔值:如果这个文件是通过 HTTP POST 上传的,则返回 true,否则返回 false。
注意:在使用该函数检查文件之前,我们必须确保文件已经上传成功,并且使用了 POST 方法。
3. $ _FILES
$ _FILES 是 PHP 中一个预定义的超全局变量,用于获取上传文件的信息。它是一个数组,可以通过键名来获取文件信息。
每个上传的文件都有以下信息:
- $ _FILES ['name']:原始文件名。
- $ _FILES ['type']:文件的 MIME 类型。
- $ _FILES ['tmp_name']:文件的临时名称,当文件上传成功后,该临时文件将被删除。
- $ _FILES ['error']:文件上传时发生的错误代码。
- $ _FILES ['size']:上传文件的大小(字节)。
示例代码:
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="fileToUpload" id="fileToUpload">
<input type="submit" value="上传文件" name="submit">
</form>
<?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));
// Check if file already exists
if (file_exists($target_file)) {
echo "文件已经存在了。";
$uploadOk = 0;
}
// Check file size
if ($_FILES["fileToUpload"]["size"] > 500000) {
echo "对不起,文件太大了,不能上传。";
$uploadOk = 0;
}
// Allow certain file formats
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
echo "对不起,只能上传 JPG, JPEG, PNG & GIF 文件。";
$uploadOk = 0;
}
// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
echo "对不起,文件没有上传成功。";
// if everything is ok, try to upload file
} else {
if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
echo "文件 ". basename( $_FILES["fileToUpload"]["name"]). " 已上传成功。";
} else {
echo "对不起,文件上传失败。";
}
}
}
?>
上述代码展示了一个文件上传的基本示例,通过使用 $ _FILES 变量和 move_uploaded_file 函数,我们可以轻松地获取和处理上传文件。
