php move_uploaded_file()上传文件实例及遇到问题的解决方法

时间:2016-09-29
php move_uploaded_file()函数用于将HTTP POST的文件上传到服务器,如果目标文件已经存在,将会被覆盖。本文章向大家介绍move_uploaded_file()函数的使用方法及在使用该函数时需要注意的问题和解决方法,需要的朋友可以参考一下。

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,此外还会发出一条警告。

注意

  1. 本函数仅用于通过 HTTP POST 上传的文件。
  2. 如果目标文件已经存在,将会被覆盖。

move_uploaded_file()函数实例

使用move_uploaded_file()函数上传文件到服务器。

<?php
     $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.<BR>";
          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脚本代码如下:

<?php  
define('ROOT',dirname(__FILE__).'/');  
  if ($_FILES["file"]["error"] > 0)  
  {  
        echo "Return Code: " . $_FILES["file"]["error"] . "<br />";  
  }  
  else  
    {  
        echo "Upload: " . $_FILES["file"]["name"] . "<br />";  
        echo "Type: " . $_FILES["file"]["type"] . "<br />";  
        echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";  
        echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";  
        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即可。