使用php上传图像时的“未定义索引”

时间:2012-02-17 13:56:49

标签: php image-upload

我有这样的表格:

<form action="image_upload.php" method="post" enctype="multipart/form-data">
   Image 1: <input type="file" name="event_image" />
   <input type="submit" />
</form> 

和这个php代码(image_upload.php):

print_r($_FILES);
if ((($_FILES["event_image"]["type"] == "image/jpeg")
|| ($_FILES["event_image"]["type"] == "image/pjpeg"))
&& ($_FILES["event_image"]["size"] < 200000))
  {
  if ($_FILES["event_image"]["error"] > 0)
    {
    echo "Return Code: " . $_FILES["event_image"]["error"] . "<br />";
    }
  else
    {
    if (file_exists("/images/events/" . $_FILES["event_image"]["name"]))
      {
      echo $_FILES["event_image"]["name"] . " already exists. ";
      }
    else
      {
      move_uploaded_file($_FILES["event_image"]["tmp_name"],
      "/images/events/" . $_FILES["event_image"]["name"]);
      echo "Stored in: " . "upload/" . $_FILES["event_image"]["name"];
      }
    }
  }
else
  {
  echo "Invalid file";
  }

我不知道这出错的地方因为我之前使用过相同的代码。

我收到以下错误但是......

数组([event_image] =&gt;数组([name] =&gt; my_image.jpg [type] =&gt; image / jpeg [tmp_name] =&gt; / private / var / tmp / phpvIYmAZ [error] =&gt ; 0 [size] =&gt; 48512))

警告:move_uploaded_file(../../../ images / events / my_image.jpg):无法打开流:第25行/path/event_upload.php中的权限被拒绝

警告:move_uploaded_file():无法在/path/event_upload.php中将'/ private / var / tmp / phpvIYmAZ'移动到'../../../images/events/my_image.jpg' 25存储在:upload / my_image.jpg

注意:未定义的索引:第57行的/path/event_upload.php中的event_image

3 个答案:

答案 0 :(得分:1)

$_FILES数组在每个属性键下以数字方式编制索引,以处理多个上传。

您必须使用$_FILES["event_image"]["type"][0]$_FILES["event_image"]["name"][0]等对零索引进行硬编码。您必须更改使用$_FILES的每一行而不使用数字索引。

注意:编辑原始答案以修复数组中数字索引的正确位置。

答案 1 :(得分:1)

好的......这似乎是我本地计算机上的文件夹权限问题...只需要chmod该文件夹。

感谢所有的建议。

答案 2 :(得分:0)

只是让你知道$ _FILES对象的样子,就在第8行之前,插入这个echo "<PRE>" . print_r ($_FILES, true) . "</PRE>";