2013-11-03 51 views
0

我想上传使用PHP move_uploaded_file文件到服务器,我收到以下错误:PHP move_uploaded_file

Warning: move_uploaded_file() [function.move-uploaded-file]: The second argument to copy() function cannot be a directory in /Users/Rick/Sites/upload/upload.php on line 7 

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/Applications/XAMPP/xamppfiles/temp/phpDlCZUd' to '/Users/Rick/Sites/upload/uploads/richardgregson' in /Users/Rick/Sites/upload/upload.php on line 7 

下面是我的代码,没有什么复杂的。

if($_POST["upload"]){ 

$target_path = "/Users/Rick/Sites/upload/uploads/" . $_POST["name"]; 

    if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)){ 
     echo "<div class='success'>The file " . "<span class='filename'>" . basename($_FILES['uploadedfile']['name']) . "</span>" . " has been uploaded</div>"; 
    } else { 
     echo "<div class='error'>There was an error uploading the file, please try again!</div>"; 
    } 
} 

它正在写入的文件夹的权限是正确的。我不明白的错误“不能是目录中的说法是,我们正在移动的文件,所以它必须是一个目录。”

感谢

里克

+1

错误告诉你什么是错的 - '$ target_path',''/ Users/Rick/Sites/upload/uploads/richardgregson'是一个目录。尝试为要保存的文件名添加正确的文件扩展名。 – Popnoodles

+0

你正在移动文件或文件夹? –

+0

move_uploaded_file将是一个文件 – Popnoodles

回答

0

错误是告诉你有什么不对 - $target_path(/ Users/Rick/Sites/upload/uploads/richardgregson)是一个目录

尝试添加一个扩展名。

$extension=end(explode('.', $_FILES["uploadedfile"]["name"])); 
$target_path = "/Users/Rick/Sites/upload/uploads/" . $_POST["name"] . '.' . $extension; 

或者,也许你把文件放到一个文件夹

$target_path = "/Users/Rick/Sites/upload/uploads/" . $_POST["name"] . '/' . $_FILES["uploadedfile"]["name"]; 

注意:你不应该相信用户上传只有你要的文件,你应该清理$ _ POST [“名称”]很容易使'../../'发布一个PHP文件。

+0

感谢扩展它的工作原理。安全是我的下一个任务。我如何检查文件是PDF? – Rik89