如果表单中没有选择文件,如何签入php
我使用jqueryajax将表单中的数据发送到php文件。 我想检查用户是否至少选择了一个文件。 这是我的附件文件表格的一部分:如果表单中没有选择文件,如何签入php,php,jquery,ajax,file,Php,Jquery,Ajax,File,我使用jqueryajax将表单中的数据发送到php文件。 我想检查用户是否至少选择了一个文件。 这是我的附件文件表格的一部分: <input type="file" class="form-control-file" name="user_attachment[]" multiple="multiple"> 如果未选择任何文件,则要签入contact.php: $user_attachment_tmp
<input type="file" class="form-control-file" name="user_attachment[]" multiple="multiple">
如果未选择任何文件,则要签入contact.php:
$user_attachment_tmp = $_FILES['user_attachment']['tmp_name'];
$user_attachment = $_FILES['user_attachment']['name'];
// several checks if no file is chosen
if( empty($_FILES['user_attachment']['name']) ) {
echo 'no file chosen'; // fails when nothing is chosen
}
if(!isset($_FILES['user_attachment']) || $_FILES['user_attachment']['error'] == UPLOAD_ERR_NO_FILE) {
echo 'no file chosen'; // fails when nothing is chosen
}
if(!file_exists($_FILES['user_attachment']['tmp_name']) || !is_uploaded_file($_FILES['user_attachment']['tmp_name'])) {
echo 'no file chosen'; // fails when nothing is chosen
}
所以问题是:在每种情况下,当没有选择任何文件时,我都不会收到消息no file selected
那么,我如何检查是否未选择任何文件(以表单形式附加)?因为
用户\u附件[]
是一个数组,您可以使用count()
函数轻松检查
$count = count($_FILES['user_attachment']['name']);
for ($i = 0; $i < $count; $i++) {
if (empty($_FILES['user_attachment']['name'][$i])) {
echo 'no file chosen';
}
if ($_FILES['user_attachment']['error'][$i] == UPLOAD_ERR_NO_FILE) {
echo 'no file chosen';
}
if (!file_exists($_FILES['user_attachment']['tmp_name'][$i]) || !is_uploaded_file($_FILES['user_attachment']['tmp_name'][$i])) {
echo 'no file chosen';
}
}
$count=count($\u文件['user\u attachment']['name']);
对于($i=0;$i<$count;$i++){
if(空($_文件['user_attachment']['name'][$i])){
回显“未选择文件”;
}
如果($\u文件['user\u attachment']['error'][$i]==上载\u ERR\u NO\u文件){
回显“未选择文件”;
}
如果(!file_存在($_FILES['user_attachment']['tmp_name'][$i])| |!是否上载了_文件($_FILES['user_attachment']['tmp_name'][$i])){
回显“未选择文件”;
}
}
由于用户\u附件[]
是一个数组,您可以使用count()
函数轻松检查
$count = count($_FILES['user_attachment']['name']);
for ($i = 0; $i < $count; $i++) {
if (empty($_FILES['user_attachment']['name'][$i])) {
echo 'no file chosen';
}
if ($_FILES['user_attachment']['error'][$i] == UPLOAD_ERR_NO_FILE) {
echo 'no file chosen';
}
if (!file_exists($_FILES['user_attachment']['tmp_name'][$i]) || !is_uploaded_file($_FILES['user_attachment']['tmp_name'][$i])) {
echo 'no file chosen';
}
}
$count=count($\u文件['user\u attachment']['name']);
对于($i=0;$i<$count;$i++){
if(空($_文件['user_attachment']['name'][$i])){
回显“未选择文件”;
}
如果($\u文件['user\u attachment']['error'][$i]==上载\u ERR\u NO\u文件){
回显“未选择文件”;
}
如果(!file_存在($_FILES['user_attachment']['tmp_name'][$i])| |!是否上载了_文件($_FILES['user_attachment']['tmp_name'][$i])){
回显“未选择文件”;
}
}
您可以使用$\u文件
数组上的大小
字段进行检查,如下所示:
if ($_FILES['user_attachment']['size'] == 0 && $_FILES['user_attachment']['error'] == 0)
{
// user_attachment is empty (and not an error)
}
(我还在此处检查错误,因为如果出现问题,它可能是0。我不会使用此检查的名称,因为它可以被覆盖)
从复制您可以使用
$\u文件
数组上的大小
字段进行检查,如下所示:
if ($_FILES['user_attachment']['size'] == 0 && $_FILES['user_attachment']['error'] == 0)
{
// user_attachment is empty (and not an error)
}
(我还在此处检查错误,因为如果出现问题,它可能是0。我不会使用此检查的名称,因为它可以被覆盖)
复制自只需查看控制台并检查
$\u文件
数组中的var\u转储($\u文件)
。由于您的表单声明,user\u attachment
是一个数组,因此您可以在其上使用任何数组函数。假设var\u dump($\u文件)
是一个数组。var\u dump($\u文件)
给了我这个:array(1){[“user\u attachment”]=>array(5){[“name”]=>array(1){[0]=>string(0)”}[“type”=>array(1){[0]=>string(0)”,}[“tmp\u name”=>array(1){[0]=>string(0)”,“error”=>(1) {[0]=>int(0)}}}
更新了答案。原因:文件数组的结构与预期略有不同。示例:$\u文件['user\u attachment']['name']
包含的条目与上载的文件一样多。如果没有上载的文件,则可以使用上面的代码检查一个错误条目。只需在控制台中查看并使用var\u dump($\u文件)检查$\u files
数组中的内容
。由于您的表单声明,user\u attachment
是一个数组,因此您可以在其上使用任何数组函数。假设$\u FILES['user\u attachment']
是一个数组。var\u dump($\u FILES)
给了我以下信息:array(1){[“user\u attachment”]=>array(5){[“name”=>array(1){[0]=>string(0)}[“type”=>array(1){[0]=>string(0)”“}[“tmp_name”]=>array(1){[0]=>string(0)”“}[“error”=>array(1){[0]=>int(4)}[“size”]=>array(1){[0]=>int(0)}}
更新了答案。原因:文件数组的结构与预期稍有不同。例如:$\u文件['user_attachment']name']
包含的条目与上载的文件数量完全相同。如果没有上载的文件,则可以使用上面的代码检查一个错误条目。这将不起作用,因为它是一个多文件上载,size
以及error
都是数组。您可以添加$_文件['user\u attachment']['size'][0]无法工作,因为它是一个多文件上载,size
以及error
都是数组。您可以添加$\u文件['user\u attachment']['size'][0]