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
}