PHP move_uploaded_file()介绍
move_uploaded_file() 函数将上传的文件移动到新位置。若成功,则返回 true,否则返回 false。
语法
move_uploaded_file(filename,destination)
参数
参数
描述
filename
destination
移动文件到这个位置。
本函数检查并确保由filename指定的文件是合法的上传文件。如果文件合法,则将其移动到destination指定的位置。
如果filename不是合法的上传文件,不会出现任何操作,move_uploaded_file() 将返回 false。
如果filename是合法的上传文件,但出于某些原因无法移动,不会出现任何操作,move_uploaded_file() 将返回 false,此外还会发出一条警告。
注意
如果目标文件已经存在,将会被覆盖。
move_uploaded_file()函数实例
使用move_uploaded_file()函数上传文件到服务器。
$tmp_filename = $_FILES['myupload']['tmp_name'];
if(!move_uploaded_file($tmp_filename,"/path/to/dest/{$_FILES['myupload']['name']}")) {
echo "An error has occurred moving the uploaded file.
";
echo "Please ensure that if safe_mode is on that the " . "UID PHP is using matches the file.";
exit;
} else {
echo "The file has been successfully uploaded!";
}
?>
move_uploaded_file上传文件失败的案例及解决方法
今天在实现一个在用户注册时上传头像图片文件的PHP脚本时,出现了问题:PHP脚本代码如下:
define('ROOT',dirname(__FILE__).'/');
if ($_FILES["file"]["error"] > 0)
{
echo "Return Code: " . $_FILES["file"]["error"] . "
";
}
else
{
echo "Upload: " . $_FILES["file"]["name"] . "
";
echo "Type: " . $_FILES["file"]["type"] . "
";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb
";
echo "Temp file: " . $_FILES["file"]["tmp_name"] . "
";
if (file_exists("upload/" . $_FILES["file"]["name"]))
{
echo $_FILES["file"]["name"] . " already exists. ";
}
else
{
if(is_uploaded_file($_FILES['file']['tmp_name'])){
$stored_path = ROOT.'/upload/'.basename($_FILES['file']['name']);
if(move_uploaded_file($_FILES['file']['tmp_name'],$stored_path)){
echo "Stored in: " . $stored_path;
}else{
echo 'Stored Failed:file save error';
}
}else{
echo 'Stored Failed:no post ';
}
}
}
?>
当我执行执行上面的脚本时,脚本输出"Stored Failed:file save error",很明显是出错了.在PHP_error_log文件中我看到了出错问题:权限不够,我终于找到了出错的地方:我们存放图片的目的目录对执行PHP的用户来说是没有权限的,执行PHP脚本的用户和我写脚本代码、创建图片文件夹的用户不是同一个用户,因此只需要将文件权限改为777即可。