2015-01-12 45 views
0

我是新來的PHP。我試圖上傳一個文件到我的本地服務器,但它一直不成功。PHP上傳文件不成功

我所有的文件都在/ var/www/html/ 但是我在html文件夾中創建了一個名爲uploads的文件夾,我將其權限更改爲777(我平均搜索的內容是最適合我的需求的)

這是我的代碼: 的index.html

<!DOCTYPE html> 
<html> 
<body> 
<form enctype="multipart/form-data" action="upload.php" method="POST"> 
<input type="hidden" name="MAX_FILE_SIZE" value="100000" /> 
Choose a file to upload: <input name="uploadedfile" type="file" /><br /> 
<input type="submit" value="Upload File" /> 
</form> 
</body> 
</html> 

upload.php的

<?php 
$target_dir = "uploads/"; 
$target_file = $target_dir . basename($_FILES['fileToUpload']['name']); 
echo "Target File: " . $target_file . "<br />"; 

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

幫助,這將非常感激。由於

+8

線索的價值:看看你輸入名字另外兩個在'$ _FILES'數組中。仔細看看那些人。你會找到你自己的答案,並且會執行你的第一個調試操作。 ;-) –

+0

撇在一邊:很少有任何理由想要'777' – CD001

+0

@ CD001可能認爲如果文件夾被設置爲755,並且不起作用,那麼777「必須」工作。 –

回答

0

輸入文件是

<input name="uploadedfile" type="file" />

所以更改$_FILES['fileToUpload']['name']$_FILES['uploadedfile']['name']

$_FILES['uploadedfile']['name']必須Name屬性文件領域的

+0

回答問題!我很感激 –

0

試試這個:

的index.html

<!DOCTYPE html> 
<html> 
<body> 
<form enctype="multipart/form-data" action="upload.php" method="POST"> 
Choose a file to upload: <input name="uploadedfile" type="file" /><br /> 
<input type="submit" value="Upload File" /> 
</form> 
</body> 
</html> 

upload.php的

if(isset($_FILES["uploadedfile"]["type"]) && ($_FILES["uploadedfile"]["size"] < 5000000)){ 
     $sourcePath = $_FILES['uploadedfile']['tmp_name']; 
     $file = $_FILES['uploadedfile']['name']; 
     $targetPath = "/uploads/".$file; 
     if(move_uploaded_file($sourcePath,$targetPath)){ 
     echo "The file: ".$_FILES['uploadedfile']['name']." has been uploaded"; 
    }else{ 
     echo "Looks like it failed."; 
    } 
}else{ 
    echo "You forgot to select a file, or the file size is too large."; 
} 

那麼這樣做是檢查文件是否存在,並檢查如果它小於5MB。如果是這樣,它會轉到上傳部分。

+0

感謝您的回覆,但它似乎不起作用。無論代碼如何,這只是每次都會失敗 –

+0

你在運行什麼樣的服務器? @ luna-games –

+0

@ jasson-basset感謝您的回覆,我正在運行本地apache服務器 –

0

您沒有設置變量

$target_path 

你的意思,但不使用

$target_file 

代替。

+0

感謝您的回覆!有一點令人尷尬的是,在那裏。不過,我仍然收到相同的不成功的上傳 –

+0

你錯了。 OP在'$ _FILES ['uploadedfile'] ['name']內使用錯誤的輸入字段名稱' 請參閱我的回答 – Umair