2013-11-03 49 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