2016-03-28 167 views
0

我一直在尋找堆棧溢出和其他教程如何使用PHP上傳文件。下面的腳本一直運行到if語句的條件是move_uploaded_file($ file_temp,$ file_destination),在這個點它迴應「file not uploaded」。圖片上傳失敗使用PHP - move_uploaded_file

包含chmod函數的if語句是我試圖在上傳文件夾中將文件權限更改爲0777(我非常肯定地給出了讀取和寫入訪問權限),因爲這已經是許多相關堆棧的建議溢出答案。雖然在這一點上我不認爲問題是文件許可。

所以基本上我不知道這有什麼問題。幫助表示讚賞:)

<form action="upload.php" method="post" enctype="multipart/form-data"> 
    Your Photo: <input type="file" name="image" /> 
    <input type="submit" name="submit" value="Submit" /> 
</form> 

<?php 
print_r($_FILES); 

// file properties 
$file_name = $_FILES['image']['name']; 
$file_tmp_name = $_FILES['image']['tmp_name']; 
$file_size = $_FILES['image']['size']; 
$file_error = $_FILES['image']['error']; 

// get the extension of the file 
$file_ext = explode('.', $file_name); 
$file_ext = strtolower(end($file_ext)); 

var_dump(file_exists('uploads')); 

// this is false 
if(chmod('uploads', 0777)){ 
    echo " booooh"; 
    } 
    else{ 
    echo "naaah"; 
    } 

$file_name_new = uniqid('', true) . '.' . $file_ext; 
echo "<br>"; 
echo $file_destination = '/uploads/' . $file_name;   

// this is false too 
if(move_uploaded_file($file_temp, $file_destination)) { 
    echo "<br>$file_destination<br>"; 
    echo "hello world<br>"; 
} 
else { 
    echo "<br>file not uploaded<br>"; 
} 

?> 
+0

'var_dump(file_exists('uploads'));'是錯誤我想你檢查存在的文件〜/上傳或目錄。檢查'php.ini'中的選項'open_basedir' http://php.net/manual/en/ini.core.php#ini.open-basedir – Naumov

回答

2

你寫:

move_uploaded_file($file_temp, $file_destination); 

$file_temp沒有在你的腳本中定義。原始文件路徑是$file_tmp_name

move_uploaded_file($file_tmp_name, $file_destination); 

另請注意,您從不使用$file_name_new

附加說明:目標路徑必須是絕對文件路徑:/uploads/目錄必須位於目錄樹的頂層,而不是文檔根目錄下。

+0

修復更改爲move_uploaded_file($ file_temp,$ file_destination); move_uploaded_file($ file_tmp_name,$ file_destination);並將$ destination_path更改爲絕對文件路徑。謝謝@ fusion3k – Daniel

+0

不客氣。 – fusion3k