1

我创建了一个用于多文件上传的表单。我在这里只报告所需的代码。

当我上传一个或多个文件时,数组

$_FILES['shopImage']

有与一个或多个文件相关的日期,我可以通过var_dump()我在下面的 PHP 代码中看到它,我可以发现上传的文件。

然而,函数

is_uploaded_file($_FILES['shopImage']['tmp_name'])

总是返回 FALSE。

请在此处生成 $_FILES 数组的 HTML 代码:

<form method="POST" action="upload.php" enctype="multipart/form-data">
...
...
...
    <div class="pics">
        <input type="file" name="shopImage[]">
        <input type="file" name="shopImage[]">
        <input type="file" name="shopImage[]">
        <input type="file" name="shopImage[]">
    </div>
...
...
...
    <input type="submit" name="submit" value="UPDATE"><input type="reset" value="RESET">
</form>

这是我用来测试它的PHP代码:

<?
require_once $_SERVER['DOCUMENT_ROOT'].'include/setup.php';

if (!empty($_POST['submit']) and $_POST['submit'] == "UPDATE") {

    var_dump($_FILES['shopImage']);
    if(is_uploaded_file($_FILES['shopImage']['tmp_name'])){
        echo "TRUE";
        exit;
    } else {
        echo "FALSE";
        exit;
    }
}
?>

这里是 var_dump()

array(5) {
  ["name"]=>
  array(10) {
    [0]=>
    string(11) "Logo.png"
    [1]=>
    string(0) ""
    [2]=>
    string(0) ""
    [3]=>
    string(0) ""
  }
  ["type"]=>
  array(10) {
    [0]=>
    string(9) "image/png"
    [1]=>
    string(0) ""
    [2]=>
    string(0) ""
    [3]=>
    string(0) ""
  }
  ["tmp_name"]=>
  array(10) {
    [0]=>
    string(14) "/tmp/php2TOmvR"
    [1]=>
    string(0) ""
    [2]=>
    string(0) ""
    [3]=>
    string(0) ""
  }
  ["error"]=>
  array(10) {
    [0]=>
    int(0)
    [1]=>
    int(4)
    [2]=>
    int(4)
    [3]=>
    int(4)
  }
  ["size"]=>
  array(10) {
    [0]=>
    int(21947)
    [1]=>
    int(0)
    [2]=>
    int(0)
    [3]=>
    int(0)
  }
}

注意:我确实在这里检查了一个非常相似的问题,但是所描述的条件与我的不同。我还没有实施move_upload_file()等等...

你能帮我找出一个解决方案吗?

非常感谢提前

4

1 回答 1

4

正如您从您的 is 数组中var_dump看到$_FILES['shopImage']['tmp_name']那样。所以你应该检查这个数组的元素,而不是数组本身。例如:

foreach ($_FILES['shopImage']['tmp_name'] as $tmp_name) {
    if (is_uploaded_file($tmp_name)) {
        echo 'Yes';
    } else {
        echo 'No';
    }
}
于 2018-04-11T19:32:24.423 回答