我在将图片上传到服务器时遇到了一些麻烦。图像应上传到IteamImages目录,名称应采用以下格式:$ userid_ $ date.png
两个问题:
图片似乎没有出现在目录
中图片名称显示为:upload / Array_20140906072547.png(相反 of upload / 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 :(得分: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/
发布为UserId)。通过直接将用户输入的数据传递给SQL查询,您还可以进行SQL注入。