在一页纸上,我有:
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会提示一个错误,告诉他必须用正确的格式上传。
谢谢。
7条答案
按热度按时间zaqlnxep1#
您可以通过以下方式进行检查:
或者,您可以使用javascript构造,仅当upload字段的值不是空字符串("")时,才启用upload/submit按钮,以避免提交表单时根本没有上载。
41zrol4v2#
在php文档中有一节是关于file handling的,你将使用find来检查各种错误,其中之一是
在您的情况下,需要类似于
或
您还应该考虑检查(并可能为用户提供适当的响应)其他各种错误。
d4so4syb3#
您应该使用is_uploaded_file($_FILES['logo']['tmp_name'])来确保文件确实是通过POST上传的。
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']))
5jvtdoz25#
我们可以使用
对于单个文件:
对于多个文件:
dsf9zpds6#
if($_FILES[“uploadfile”][“name”]=="”){} this可以使用没有选择要上载的文件,如果正文回显“没有选择文件”,则您的操作将转到此处;
y1aodyip7#
是唯一正确的道路