Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何测试用户是否选择了要上载的文件?_Php_File_Upload - Fatal编程技术网

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

Php 如何测试用户是否选择了要上载的文件?,php,file,upload,Php,File,Upload,在一页上,我有: if (!empty($_FILES['logo']['name'])) { $dossier = 'upload/'; $fichier = basename($_FILES['logo']['name']); $taille_maxi = 100000; $taille = filesize($_FILES['logo']['tmp_name']); $extensions = array('.png',

在一页上,我有:

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)) {
      // ...
    }
}
问题是,如果用户希望编辑信息而不上载徽标,则会引发错误:“错误,您必须上载正确的类型”

因此,如果用户没有为了上传而在输入框中放入任何内容,我不想进入这些条件测试。

我测试了:
if(!empty($\u FILES['logo']['name'])
if(isset($\u FILES['logo']['name'])

但两者似乎都不起作用

有什么想法吗

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

谢谢。

我会测试
是否($\u文件['logo']['tmp\u名称]])
,看看它是否有效


或者,更恰当地说(谢谢Baloo):
如果($\u FILES['logo']['tmp\u name'])
您应该使用它来确保文件确实是通过帖子上传的。

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'] === 0)

是唯一正确的方法

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

if (empty($_FILES['logo']['name'])) {
    // No file was selected for upload, your (re)action goes here
}
或者,您可以使用javascript构造,只要upload字段的值不是空字符串(“”),就只启用upload/submit按钮,以避免在没有上传的情况下提交表单。

我们可以使用

对于单个文件:

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
}

我在我的帖子上添加了一些信息。如果你能看的话。thxi在我的帖子上添加了一些信息。如果你能看的话。thx@Tristan睁开眼睛看:值:4;未创建任何文件uploaded@Col.弹片哦,真的,我很抱歉,也许是我该戴上眼镜的时候了。pI亲自检查了这个。这确实是检查这样一个ca的正确方法请注意:“如果表单中没有选择要上载的文件,PHP将把$_文件['userfile']['size']返回为0,把$_文件['userfile']['tmp_name']返回为无。”(来自PHP文档)这与PHP文档所述相反。如果文件上传成功,这将实际评估为真。这就是我所寻找的。感谢…+1的提问和回答。(y)
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
}