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

yiytaume  于 2023-02-11  发布在  PHP
关注(0)|答案(7)|浏览(146)

在一页纸上,我有:

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,则会出现错误:'错误,您必须上载正确的类型'

    • 因此,如果用户没有在输入框中输入任何内容以便上传,我不想输入这些条件测试。**

i测试:if (!empty($_FILES['logo']['name'])if (isset($_FILES['logo']['name'])
但两者似乎都不起作用。
有什么想法吗?
编辑:也许我不是很清楚,我不想测试他是否上传了一个logo,我想测试他是否选择了一个文件上传,因为现在,如果他没有选择一个文件上传,php会提示一个错误,告诉他必须用正确的格式上传。
谢谢。

zaqlnxep

zaqlnxep1#

您可以通过以下方式进行检查:

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

或者,您可以使用javascript构造,仅当upload字段的值不是空字符串("")时,才启用upload/submit按钮,以避免提交表单时根本没有上载。

41zrol4v

41zrol4v2#

在php文档中有一节是关于file handling的,你将使用find来检查各种错误,其中之一是

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) { ... }

您还应该考虑检查(并可能为用户提供适当的响应)其他各种错误。

d4so4syb

d4so4syb3#

您应该使用is_uploaded_file($_FILES['logo']['tmp_name'])来确保文件确实是通过POST上传的。

kmb7vmvb

kmb7vmvb4#

我将测试if ( [file_exists](http://php.net/file_exists) ($_FILES['logo']['tmp_name'])),看看它是否工作。
或者,更恰当地说(谢谢Baloo):if ( [is_uploaded_file](http://php.net/is_uploaded_file) ($_FILES['logo']['tmp_name']))

5jvtdoz2

5jvtdoz25#

我们可以使用
对于单个文件:

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

对于多个文件:

if ($_FILES['logo']['tmp_name'][0] == "") {
    // No files were selected for upload, your (re)action goes here
}
dsf9zpds

dsf9zpds6#

if($_FILES[“uploadfile”][“name”]=="”){} this可以使用没有选择要上载的文件,如果正文回显“没有选择文件”,则您的操作将转到此处;

y1aodyip

y1aodyip7#

if ($_FILES['logo']['error'] === 0)

是唯一正确的道路

相关问题