在页面上,我有:
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引发错误,告诉他必须以正确的格式上传.
谢谢.
Old*_*ool 78
您可以通过以下方式检查:
if (empty($_FILES['logo']['name'])) {
    // No file was selected for upload, your (re)action goes here
}
或者,您可以使用仅在上载字段具有除空字符串("")之外的值时启用上载/提交按钮的javascript构造,以避免提交完全没有上载的表单.
Jon*_*nas 34
php文档中有一节关于文件处理.你会发现你可以检查各种错误,其中之一就是
UPLOAD_ERR_OK
    Value: 0; There is no error, the file uploaded with success.
<...>
UPLOAD_ERR_NO_FILE
    Value: 4; No file was uploaded.
在你的情况下,你需要像
if ($_FILES['logo']['error'] == UPLOAD_ERR_OK) { ... }
要么
if ($_FILES['logo']['error'] != UPLOAD_ERR_NO_FILE) { ... }
您应该考虑检查(并可能为用户提供适当的响应)以解决其他各种错误.
我会测试一下它是否有效.if (file_exists($_FILES['logo']['tmp_name']))
或者,更加认真(感谢Baloo): if (is_uploaded_file($_FILES['logo']['tmp_name']))