在页面上,我有:
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)) {
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
问题是,如果用户想要编辑信息而不上传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
}
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用仅在上载字段具有除空字符串("")之外的值时启用上载/提交按钮的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.
Run Code Online (Sandbox Code Playgroud)
在你的情况下,你需要像
if ($_FILES['logo']['error'] == UPLOAD_ERR_OK) { ... }
Run Code Online (Sandbox Code Playgroud)
要么
if ($_FILES['logo']['error'] != UPLOAD_ERR_NO_FILE) { ... }
Run Code Online (Sandbox Code Playgroud)
您应该考虑检查(并可能为用户提供适当的响应)以解决其他各种错误.
我会测试一下它是否有效.if (file_exists($_FILES['logo']['tmp_name']))
或者,更加认真(感谢Baloo): if (is_uploaded_file($_FILES['logo']['tmp_name']))