2014-09-06 194 views
-1

我在將圖像上載到服務器時遇到了一些問題。圖像應被上傳到目錄IteamImages和名稱應該是格式爲:$ userid_ $ date.png圖像上傳PHP問題

兩個問題:

的圖像似乎沒有在目錄中顯示

圖像名稱顯示爲:上傳/ Array_20140906072547.png(代替上傳 /4_20140906072547.png)

$UserId=$_POST['UserId']; 
$uploaddir = "IteamImages/"; 
$DateLastEdit = $UserID."_".date("YmdHis"); 
$dateCreates = date("Y-m-d H:i:s"); 
$file = $DateLastEdit.".png"; 
$uploadfile = $uploaddir . $file; 

if ($_FILES["file"]["error"] > 0) { 
    echo "Error: " . $_FILES["file"]["error"] . "<br>"; 
} else { 
    echo "Upload: " . $_FILES["file"]["name"] . "<br>"; 
    echo "Type: " . $_FILES["file"]["type"] . "<br>"; 
    echo "Size: " . ($_FILES["file"]["size"]/1024) . " kB<br>"; 
    echo "Stored in: " . $_FILES["file"].$file; 
} 
if (file_exists("upload/" . $_FILES["file"]["name"])) { 
     echo $_FILES["file"]["name"] . " already exists. "; 
    } else { 
     move_uploaded_file($_FILES["file"].$file, 
     "upload/" . $_FILES["file"].$file); 
     echo "Stored in: " . "upload/" . $_FILES["file"].$file; 
    } 

mysql_query("UPDATE ItemDetails SET ItemImage='$file' WHERE UserID ='$UserID' AND Id='$last'"); 

這是HTML形式的一部分:

<form action="manual-item-post.php" method="post" enctype="multipart/form-data"> 
UserId: <input type="text" name="UserId"><br> 
<label for="file">Image Upload:</label><br> 
<input type="file" name="file" id="file"><br> 
<input type="submit"> 
</form> 

回答

0

$_FILES["file"]是一個數組,當您連接它echo "Stored in: " . "upload/" . $_FILES["file"].$file; PHP自動將其轉換爲字符串,從而導致Array

我想你想它是echo "Stored in: " . "upload/" . $file;

你也可能要改變move_uploaded_file($_FILES["file"].$file, "upload/" . $_FILES["file"].$file);move_uploaded_file($_FILES["file"]['tmp_name'], $uploadfile);$_FILES["file"]['tmp_name']是要移動上傳的臨時文件的路徑)

而且$DateLastEdit = $UserID."_".date("YmdHis");總是會導致「_DATE」作爲變量是錯誤的(需要爲$DateLastEdit = (int)$UserId."_".date("YmdHis");

PS:我將$ UserId轉換爲整數,否則可以進行目錄遍歷(例如,將用戶標識後的../../something/後)。通過將用戶輸入的數據直接傳遞給SQL查詢,您還可以進行SQL注入。

+0

感謝您的徹底解答。我解決了這兩個問題。 – user2913669 2014-09-06 11:57:37