PHP未定义索引 - 当变量中包含值时发生

时间:2013-06-30 04:16:17

标签: php arrays variables file-upload

我有以下代码用于成功上传图片:

$fileName = $_FILES['file']['name'];
$fileSize =  $_FILES['file']['size'];
$fileType = $_FILES['file']['type'];
$fileTmp = $_FILES['file']['tmp_name'];
list($origWidth, $origHeight) = getimagesize($fileTmp);

问题是我在每一行都得到了一个'Undefined index'。

我在此代码之前有print_r($ _ FILES)并且每个数组变量都存在,并且我已经回显了$ fileName之类的变量,并且可以看到每个变量都有值。

此外,我已经在此代码块之前添加了它,它没有任何区别:

$fileName = $fileSize = $fileType = $fileTmp = ''; 

有关如何确定这些变量的任何建议?

三江源

更新.............................

这是HTML代码:

      <form action="http://www.domainname.com/scripts/php/processing.php?page=join&section=precrop&type=profile&token=photoToken" method="post" id="joinPhotoUploadFormProfile" enctype="multipart/form-data">
        <input type="file" name="file" class="fileProfile"><br>
      </form>

更新...............................

的var_dump($ _ FILES);输出如下:

enter image description here

1 个答案:

答案 0 :(得分:1)

由于您收到Undefined index并且脚本成功完成上传,只需添加以下行以确保请求方法实际上是POST并且$_FILES数组已设置。

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $fileName = (isset($_FILES['file']['name']) ? $_FILES['file']['name'] : null);
    $fileSize = (isset($_FILES['file']['size']) ? $_FILES['file']['size'] : null);
    $fileType = (isset($_FILES['file']['type']) ? $_FILES['file']['type'] : null);
    $fileTmp = (isset($_FILES['file']['tmp_name']) ? $_FILES['file']['tmp_name'] : null);

    //the rest of your upload code
}

看起来你通过url传递了很多变量 processing.php?page=join&section=precrop&type=profile&token=photoToken表示您在脚本中有其他条件,因此请确保您在正确的位置编辑代码。