图片上传PHP问题

时间:2014-09-06 11:33:29

标签: php html mysql

我在将图片上传到服务器时遇到了一些麻烦。图像应上传到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>

1 个答案:

答案 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注入。