【问题标题】:multi image upload fails多图上传失败
【发布时间】:2013-01-10 18:17:17
【问题描述】:

我正在尝试允许在一个表单中上传多个图像。但是它并不完全有效,我无法发现问题。

表格如下所示:

<form method="post" action="add-property.php" enctype="multipart/form-data">
<input type="file" multiple="multiple" name="files[]" />
<input type="submit" name="submit" class="property-submit" value="Submit Property" />
</form>

随后的 PHP(在同一页面上)是:

//Image logic    
for ($i = 0; $i < count($_FILES['files']['name']); $i++) {
    if (($_FILES['files']['type'] == "image/jpeg") || ($_FILES['files']['type'] == "image/png") || ($_FILES['files']['type'] == "image/jpg")) {
        if ($_FILES['files']["error"] > 0) {
            echo "Return Code: ".$_FILES['files']["error"]."<br />";
        }
        else {
            $target = $_SERVER['DOCUMENT_ROOT'].'/images/property-images/';
            if (file_exists($target.$currUser.$_FILES['files']['name'])) {
                echo $file["name"] . "already exists.";
            }
            else {
                move_uploaded_file($_FILES['files']["tmp_name"],
                $target.$currUser.$_FILES['files']["name"]);
                echo "Stored in: ".$target.$currUser.$_FILES['files']["name"];
            }
        }
    }
    else {
        echo 'error';
    }
}

$currUser 是用户的当前用户名。

问题是 - 当我尝试上传文件时。什么都没发生。它回显一个错误,但文件类型绝对正确。没有图像发送到该文件夹​​。我哪里出错了?

编辑 - 请求的 var 转储:

array(1) {
  ["files"]=>
  array(5) {
    ["name"]=>
    array(1) {
      [0]=>
      string(17) "Chrysanthemum.jpg"
    }
    ["type"]=>
    array(1) {
      [0]=>
      string(10) "image/jpeg"
    }
    ["tmp_name"]=>
    array(1) {
      [0]=>
      string(14) "/tmp/php1WEAjj"
    }
    ["error"]=>
    array(1) {
      [0]=>
      int(0)
    }
    ["size"]=>
    array(1) {
      [0]=>
      int(879394)
    }
  }
}

【问题讨论】:

  • 你能粘贴echo "&lt;pre&gt;"; var_dump($_FILES); echo "&lt;/pre&gt;";的结果吗?
  • 没问题,将在编辑中将其添加到主目录
  • "它回显了一个错误,但文件类型绝对正确。"什么错误?发布错误总是有帮助的。

标签: php html file image-upload


【解决方案1】:

除了count($_FILES['files']['name']),您需要将[$i] 添加到您的每个$_FILES 引用中,例如$_FILES['files']["tmp_name"][$i]

另外,$file["name"] 应该是 $_FILES['files']["name"][$i]

【讨论】:

  • 哦非常好!发现得好。感谢您的及时帮助:)
【解决方案2】:
for ($i = 0; $i < count($_FILES['file']['name']); $i++) {

if (($_FILES['file']['type'][$i] == "image/jpeg") || ($_FILES['file']['type'][$i] == "image/png") || ($_FILES['file']['type'][$i] == "image/jpg")) {
    if ($_FILES['file']["error"][$i] > 0) {
        echo "Return Code: ".$_FILES['file']["error"][$i]."<br />";
    }
    else {

        if (file_exists("upload/".$_FILES['file']['name'][$i])) {
            echo $_FILES['file']["name"][$i] . "already exists.<br>";
        }
        else {
            move_uploaded_file($_FILES['file']["tmp_name"][$i],
                "upload/".$_FILES['file']["name"][$i]);
            echo "Stored in: ". "upload/" .$_FILES['file']["name"][$i];
        }
    }
}
else {
    echo 'error';
}

}

【讨论】:

    猜你喜欢
    • 2013-07-28
    • 2014-10-25
    • 1970-01-01
    • 1970-01-01
    • 2016-04-11
    • 2014-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多