【问题标题】:print_r() function shows values, but I can't access them for conditionals [duplicate]print_r() 函数显示值,但我无法访问它们的条件 [重复]
【发布时间】:2018-09-02 01:25:12
【问题描述】:

好吧,我很困惑。我正在尝试学习如何在 PHP 中上传图像文件。

<form name="add_form" action="submit.php" method="post" enctype="multipart/form-data">
<input type="file" name="image">
<button type="submit">Submit</button>
</form>

在 submit.php 文件中:

print_r($_FILES);
    if(empty($_FILES['file']['name'])){
        echo "empty";
    }else{
        echo "not empty";
    }

print_r($_FILES);给我看这个:

Array ( [image] => Array ( [name] => van Gogh - GalleryPlayer.jpg [type] => image/jpeg [tmp_name] => /tmp/phpbYjG7m [error] => 0 [size] => 1437795 ) ) 

但是当我使用 (empty($_FILES['file']['name'])) 运行 if/else 时,它​​总是回显“empty”。如果在 print_r($_FILES) 数组中怎么可能是空的呢?

我在这里的最终目标是检查用户是否上传了图像文件(它是较大表单的一部分)。如果他们这样做,请使用它。如果没有,请使用默认图像。所以我只是想测试表单字段的存在。有意义吗?

感谢您提供的任何见解。

干杯!

【问题讨论】:

  • 需要使用name属性访问文件if($_FILES['image']['name'] == "") echo "empty";
  • 您的print_r() 输出建议您应该使用empty($_FILES['image']['name']) 而不是['file']['name']
  • 试过这个:if(empty($_FILES['image']['type']))if($_FILES['image']['name;] == "")。两者都属于第一个条件“空”。似乎我尝试过的所有变体,都空无一物。
  • 刚刚也试过这个:if(!file_exists($_FILES['image']['tmp_name']) || !is_uploaded_file($_FILES['image']['tmp_name']))。还是空着回来。

标签: php forms file-upload


【解决方案1】:

$_FILES['image']['name'] 没问题。再试一次。然后类似访问其他字段

【讨论】:

  • 不,这不是“好的”。这不是正确的数组名称。
  • 我测试我的本地是否正确,如果错误告诉我位置,兄弟
猜你喜欢
  • 1970-01-01
  • 2014-10-22
  • 1970-01-01
  • 2019-01-06
  • 2014-12-06
  • 1970-01-01
  • 1970-01-01
  • 2011-01-02
  • 2020-04-15
相关资源
最近更新 更多