【问题标题】:PHP/HTML is it possible to make file uploading by user not mandatoryPHP / HTML是否可以使用户上传文件不是强制性的
【发布时间】:2020-10-14 12:03:16
【问题描述】:

我正在创建一个网站,用户可以在其中应用他们的汽车表单,我选择输入 10 个图像,因为我认为移动用户可以一次选择多张照片(也许有可能,但我不知道)所以我来了有了这个想法。我面临的问题是,如果其中一个上传输入为空,它会给我一个错误

致命错误:未捕获的 PHPMailer\PHPMailer\Exception:无法访问文件:在 E:\XAMPP\htdocs\TEST\phpmailer\src\PHPMailer.php:2991 堆栈跟踪:#0 E:\XAMPP\htdocs\TEST \contactform.php(58): PHPMailer\PHPMailer\PHPMailer->addAttachment('', '') #1 {main} 在 E:\XAMPP\htdocs\TEST\phpmailer\src\PHPMailer.php 第 2991 行抛出

        <label>1 <input type="file" class="file" name="image" id="image" /></label> 
              <label>2 <input type="file" class="file" name="image1" id="image1" /></label> 
              
              <label>3 <input type="file" class="file" name="image2" id="image2" /></label> 
              
              <label>4 <input type="file" class="file" name="image3" id="image3" /></label> 
              
              <label>5 <input type="file" class="file" name="image4" id="image4" /></label> 
              <label>6 <input type="file" class="file" name="image5" id="image5" /></label> 
              <label>7 <input type="file" class="file" name="image6" id="image6" /></label> 
              <label>8 <input type="file" class="file" name="image7" id="image7" /></label> 
              <label>9 <input type="file" class="file" name="image8" id="image8" /></label> 
              <label>10 <input type="file" class="file" name="image9" id="image9" /></label> 



 $mail->AddAttachment($_FILES['image']['tmp_name'],
                      $_FILES['image']['name']);
                      
 $mail->AddAttachment($_FILES['image1']['tmp_name'],
                      $_FILES['image1']['name']);
                      
 $mail->AddAttachment($_FILES['image2']['tmp_name'],
                      $_FILES['image2']['name']);
                      
 $mail->AddAttachment($_FILES['image3']['tmp_name'],
                      $_FILES['image3']['name']);
                      
 $mail->AddAttachment($_FILES['image4']['tmp_name'],
                      $_FILES['image4']['name']);
                      
 $mail->AddAttachment($_FILES['image5']['tmp_name'],
                      $_FILES['image5']['name']);
                      
 $mail->AddAttachment($_FILES['image6']['tmp_name'],
                      $_FILES['image6']['name']);
                      
 $mail->AddAttachment($_FILES['image7']['tmp_name'],
                      $_FILES['image7']['name']);
                      
 $mail->AddAttachment($_FILES['image8']['tmp_name'],
                      $_FILES['image8']['name']);
                      
 $mail->AddAttachment($_FILES['image9']['tmp_name'],
                      $_FILES['image9']['name']);

【问题讨论】:

  • 您可以使用if isset(&lt;variable&gt;){检查每个输入是否被选中
  • 或者只上传 1 个并允许选择多个

标签: php html forms email


【解决方案1】:

您应该更改文件上传以允许多张图片,因此您只需要一个文件元素。

<input type="file" class="file" name="image" id="image" multiple/>

接下来,只需在 PHP 中循环遍历它们,并将它们作为附件添加到 $mail

foreach($_FILES['image']['name'] as $key => $name) {
    $tmp_name = $_FILES['image'][$key]['tmp_name'];
    $mail->AddAttachment($tmp_name, $name);
}

【讨论】:

  • 这个循环给了我这个错误:警告:在第 57 行的 E:\XAMPP\htdocs\TEST\contactform.php 中为 foreach() 提供的参数无效
  • @KostasSkutulas 您提交了任何文件吗?
  • 是的,我做到了。 .
猜你喜欢
  • 1970-01-01
  • 2014-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-04
  • 2016-10-23
相关资源
最近更新 更多