PHP文件上传。 var_dump返回空字符串

时间:2013-01-02 05:38:45

标签: php file file-upload upload var-dump

我正在尝试使用php创建文件上传。但是$_FILES['photo']['name']什么都不返回。然后我google了很多,找出了var_dump方法。当我运行它。它返回以下数组。

array (size=5)
  'name' => string '' (length=0)
  'type' => string '' (length=0)
  'tmp_name' => string '' (length=0)
  'error' => int 4
  'size' => int 0

name,type和tmp_name为空。

这是完整的代码。 (PHP)

if ($_SERVER['REQUEST_METHOD'] === 'POST') {

     var_dump($_FILES['photo']);
}

HTML

<form class="bs-docs-example" action="upload.php" method="post" enctype="multipart/form-data">
        <fieldset>
            <legend>File Upload</legend>

            <label><input type="file" name="photo" size="25" /></label>
            <label><input type="file" name="photo" size="25" /></label>
            <label><input type="file" name="photo" size="25" /></label>

            <label><button type="submit" name="add_video" value="Submit" class="btn">Submit</button></label>

        </fieldset>
</form>

任何建议。在此先感谢。

3 个答案:

答案 0 :(得分:4)

当您有多个具有相同name的表单元素时,它们将相互覆盖。 PHP仅尊重具有该名称的最后一个输入,该输入可能是空白的,并且忽略了您填写的早期输入。

您可以查看PHP manual on multiple file uploads,但结果是如果您希望PHP“看到”所有这些并将其组织到输入名称的末尾,则需要[]一个阵列给你。否则,只有一个输入,或者只为每个输入选择不同的名称。

答案 1 :(得分:2)

        <label><input type="file" name="photo" size="25" /></label>
        <label><input type="file" name="photo" size="25" /></label>
        <label><input type="file" name="photo" size="25" /></label>

三个同名的元素。那可能就是为什么

答案 2 :(得分:1)

尝试

 var_dump($_POST);

要查看是否有任何回复的帖子,但是有3个相同名称的元素是个问题。

<label><input type="file" name="photo1" size="25" /></label>
<label><input type="file" name="photo2" size="25" /></label>
<label><input type="file" name="photo3" size="25" /></label>