is_uploaded_file()总是返回FALSE

时间:2018-04-11 19:25:21

标签: php is-uploaded-file

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

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

$_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)
  }
}

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

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

提前多多感谢

1 个答案:

答案 0 :(得分:3)

正如您从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';
    }
}