文件上传函数-move_uploaded_file()的用法和示例
move_uploaded_file()是PHP中一个用于将上传的文件移动到新位置的函数。它的语法如下:
bool move_uploaded_file ( string $filename , string $destination )
其中,$filename是上传的文件的临时路径,$destination是文件移动的目标路径。
这个函数有几个注意点:
1. 上传的文件必须是通过POST请求上传的,并且使用了enctype="multipart/form-data"的表单。
2. 在调用move_uploaded_file()之前,需要先调用is_uploaded_file()函数来验证文件是否是通过合法的HTTP POST上传的。这是为了防止恶意的攻击者绕过后台验证直接访问move_uploaded_file()。
3. $destination参数可以是相对路径或绝对路径。如果是相对路径,则是相对于当前脚本所在的目录。
4. 如果用于存放上传文件的目录没有写入权限,move_uploaded_file()会失败。
在调用move_uploaded_file()函数之前,需要进行一些验证步骤。下面是一个简单的文件上传函数的示例:
<?php
function uploadFile($file) {
$fileTmpPath = $file['tmp_name'];
$fileName = $file['name'];
$fileSize = $file['size'];
$fileType = $file['type'];
$fileError = $file['error'];
// 验证文件是否是通过合法的HTTP POST上传的
if (!is_uploaded_file($fileTmpPath)) {
echo "非法文件上传!";
return false;
}
// 移动文件到指定目录
$destinationPath = "uploads/" . $fileName; // 假设目标目录是uploads
if (move_uploaded_file($fileTmpPath, $destinationPath)) {
echo "文件上传成功!";
return true;
} else {
echo "文件上传失败!";
return false;
}
}
// 示例用法
if (isset($_FILES['file'])) {
uploadFile($_FILES['file']);
}
?>
上面的示例中,首先从$_FILES数组中获取上传的文件的临时路径、文件名、大小、类型和错误码等信息。然后,通过调用is_uploaded_file()函数验证文件上传的合法性。
最后,通过将临时路径和目标路径传递给move_uploaded_file()函数,将上传文件移动到指定目录。如果移动成功,则返回true并显示"文件上传成功!";如果移动失败,则返回false并显示"文件上传失败!"。
这个示例只是一个最基本的演示,实际应用中还需要对上传的文件进行更严格的验证、限制文件类型和大小等操作,以确保系统的安全性。
