2017-02-18 104 views
-1

試圖讓用戶將圖像上傳到文件夾並查看它但它不會 工作。我有辦法讓人們可以上傳他們的個人資料照片,但不會讓他們上傳到那裏畫廊。以下是它的代碼。我得到的錯誤是,該文件將不會創建一個文件並上傳圖片到該文件夾​​是這樣的...用戶/羅比/我/ 94399549904fkfkmkd.png無法將圖像上傳到文件夾

if (isset($_FILES["photo"]["name"]) && isset($_POST["gallery"])){ 
$sql = "SELECT COUNT(id) FROM photos WHERE user='$log_username'"; 
$query = mysqli_query($db_conx, $sql); 
$row = mysqli_fetch_row($query); 
if($row[0] > 14){ 
    header("location: ../message.php?msg=The demo system allows only 15 pictures total"); 
    exit(); 
} 
$gallery = $_POST["gallery"]; 

    $target_dir = "/user/$log_username/$gallery/"; 
$target_file = $target_dir . basename($_FILES["photo"]["name"]); 

    if (move_uploaded_file($_FILES["photo"]["tmp_name"], $target_file)) { 
    echo "The file ". basename($_FILES["photo"]["name"]). " has been uploaded."; 
    } else { 
    echo "Sorry, there was an error uploading your file."; 
    } 

這是形式用戶

$photo_form = '<form id="photo_form" enctype="multipart/form-data" method="post" action="photo_system.php?gallery=yes">'; 
$photo_form .= '<h3>Hi '.$u.', add a new photo into one of your galleries</h3>'; 
$photo_form .= '<b>Choose Gallery:</b> '; 
$photo_form .= '<select name="gallery" required>'; 
$photo_form .=  '<option value=""></option>'; 
$photo_form .=  '<option value="Myself">Myself</option>'; 
$photo_form .=  '<option value="Family">Family</option>'; 
$photo_form .=  '<option value="Pets">Pets</option>'; 
$photo_form .=  '<option value="Friends">Friends</option>'; 
$photo_form .=  '<option value="Random">Random</option>'; 
$photo_form .= '</select>'; 
$photo_form .= ' &nbsp; &nbsp; &nbsp; <b>Choose Photo:</b> '; 
$photo_form .= '<input type="file" name="photo" required>'; 
$photo_form .= '<p><input type="submit" value="Upload Photo Now"></p>'; 
$photo_form .= '</form>'; 
+0

你會得到什麼樣的錯誤,這是什麼形式?太多未知數。 –

+0

順便說一句,你可能在這裏之前輸出標題,你的邏輯關閉。 –

+0

我得到的錯誤是該文件不會創建文件並將圖像上傳到該文件夾​​,就像這樣...用戶/ robbie /我/ 94399549904fkfkmkd.png –

回答

0

當我遇到它通常也被涉及到,要麼要移動的文件不存在的目錄,或者用戶的PHP運行不具有所需的權限寫入過類似的問題,到那個位置。

首先,我會確保'/ user'文件夾存在,並且用戶php正在運行,可以寫入。一個臨時的解決辦法,如果你是在Linux上運行的可能是該文件夾的權限設置爲777(任何人都可以讀,寫),使用下面的命令:

chmod 777 /user 

這將有助於排除PHP寫的權限但故障排除時的問題不應作爲長期解決方案。相反,應將/ user文件夾的所有者設置爲運行php的用戶,然後將權限設置爲755,該權限僅允許該用戶寫入該位置。

另外,請記住,在文件系統的根目錄中使用/將顯示一個路徑。如果該文件夾位於您的網站目錄中,則可能需要完整的絕對路徑。例如/ var/www/user。

爲了找到這一點,它可以幫助使用GETCWD()函數在PHP中:

http://php.net/manual/en/function.getcwd.php

接下來,確保你寫之前創建的目錄。

  1. 檢查目錄使用is_dir()存在:

http://php.net/manual/en/function.is-dir.php

  • 創建目錄如果使用MKDIR()需要:
  • http://php.net/manual/en/function.mkdir.php

    你可能會n在用戶名(/ user/$ log_username)和圖庫(/ user/$ log_username/$ gallery)級別執行上述步驟。