2014-09-06 148 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