一尘不染

如何测试用户是否已选择要上传的文件?

php

在页面上,我有:

if (!empty($_FILES['logo']['name'])) {
    $dossier     = 'upload/';
    $fichier     = basename($_FILES['logo']['name']);
    $taille_maxi = 100000;
    $taille      = filesize($_FILES['logo']['tmp_name']);
    $extensions  = array('.png', '.jpg', '.jpeg');
    $extension   = strrchr($_FILES['logo']['name'], '.');

    if(!in_array($extension, $extensions)) {
        $erreur = 'ERROR you  must upload the right type';
    }

    if($taille>$taille_maxi) {
         $erreur = 'too heavy';
    }

    if(!empty($erreur)) {
      // ...
    }
}

问题是,如果用户希望在不上载LOGO的情况下编辑信息,则会引发错误:“必须上载正确的错误类型”

因此,如果用户没有在输入框中放入任何东西来上传它,我就不想输入这些条件测试。

我测试: if (!empty($_FILES['logo']['name'])if (isset($_FILES['logo']['name'])

但两者似乎都不起作用。

有任何想法吗?

编辑:也许我不太清楚,我不想测试他是否上传了徽标,我想测试如果他选择了要上传的文件,因为现在,如果他没有选择要上传的文件,
php引发错误,提示他必须以正确的格式上传。

谢谢。


阅读 245

收藏
2020-05-29

共1个答案

一尘不染

您可以使用以下方法进行检查:

if (empty($_FILES['logo']['name'])) {
    // No file was selected for upload, your (re)action goes here
}

或者,您可以使用Javascript结构,仅在上载字段具有除空字符串(“”)之外的其他值时才启用上载/提交按钮,从而避免提交完全不上载的表单。

2020-05-29