第三个文件仅通过phpmailer附加

第三个文件仅通过phpmailer附加,php,phpmailer,Php,Phpmailer,我正在通过phpmailer发送一封包含多个附件的电子邮件。我用来发送多个附件的循环是带有附件的消息,只包含最后一个choosen文件,前两个或一个文件不发送。循环有问题吗。请: foreach($_FILES as $key => $file){ $target_path = "uploads/"; $target_path = $target_path .basename($file['name']); if(move_uploaded_file($f

我正在通过phpmailer发送一封包含多个附件的电子邮件。我用来发送多个附件的循环是带有附件的消息,只包含最后一个choosen文件,前两个或一个文件不发送。循环有问题吗。请:

     foreach($_FILES as $key => $file){
    $target_path = "uploads/";
    $target_path = $target_path .basename($file['name']);

   if(move_uploaded_file($file['tmp_name'], $target_path)) {
   echo "the file ".basename($file['name'])." has been uploaded";
   }else {
  echo "there was an error";
   }
  mail->AddAttachment($target_path);
   }

     <form id=
       "mail" name="mail" method="POST" action="<?php $PHP_SELF ?>" 
    enctype="multipart/form-data">
     <input type="file" name="uploaded" multiple="" />
    <input name="Submit1" type="submit" value="Submit"  />
    </form>
foreach($\u文件为$key=>$file){
$target_path=“uploads/”;

$target_path=$target_path.basename($file['name']); 如果(移动上传的文件($file['tmp\u name',$target\u path)){ 回显“文件”.basename($file['name'])”已上载; }否则{ echo“有一个错误”; } 邮件->添加附件($target\u path); }
在循环的每次迭代中,尝试向每个文件添加一个唯一的编号,如下所示:

$counter = 0;
foreach($_FILES as $key => $file){
    $counter++;
    $target_path = "uploads/";
    $target_path = $target_path .basename($file['name'], ".jpg") . $counter . ".jpg";



if(move_uploaded_file($file['tmp_name'], $target_path)) {
   echo "the file ".basename($file['name'])." has been uploaded";
   }else {
  echo "there was an error";
   }
  mail->AddAttachment($target_path);
   }

 <form id=
   "mail" name="mail" method="POST" action="<?php $PHP_SELF ?>" 
enctype="multipart/form-data">
 <input type="file" name="uploaded" multiple="" />
<input name="Submit1" type="submit" value="Submit"  />
$counter=0;
foreach($\作为$key=>$file的文件){
$counter++;
$target_path=“uploads/”;

$target_path=$target_path.basename($file['name'],“.jpg”)。$counter.“.jpg”; 如果(移动上传的文件($file['tmp\u name',$target\u path)){ 回显“文件”.basename($file['name'])”已上载; }否则{ echo“有一个错误”; } 邮件->添加附件($target\u path); }
在循环的每次迭代中,尝试向每个文件添加一个唯一的编号,如下所示:

$counter = 0;
foreach($_FILES as $key => $file){
    $counter++;
    $target_path = "uploads/";
    $target_path = $target_path .basename($file['name'], ".jpg") . $counter . ".jpg";



if(move_uploaded_file($file['tmp_name'], $target_path)) {
   echo "the file ".basename($file['name'])." has been uploaded";
   }else {
  echo "there was an error";
   }
  mail->AddAttachment($target_path);
   }

 <form id=
   "mail" name="mail" method="POST" action="<?php $PHP_SELF ?>" 
enctype="multipart/form-data">
 <input type="file" name="uploaded" multiple="" />
<input name="Submit1" type="submit" value="Submit"  />
$counter=0;
foreach($\作为$key=>$file的文件){
$counter++;
$target_path=“uploads/”;

$target_path=$target_path.basename($file['name'],“.jpg”)。$counter.“.jpg”; 如果(移动上传的文件($file['tmp\u name',$target\u path)){ 回显“文件”.basename($file['name'])”已上载; }否则{ echo“有一个错误”; } 邮件->添加附件($target\u path); }
[]
添加到输入字段的名称中,如下所示:

<input type="file" name="uploaded[]" multiple="" />
每个数组中的索引
0
是一个文件,每个数组中的索引
1
是下一个文件,依此类推


这也是获得相同名称的多个复选框的值的方式。(参见示例


以下是如何循环浏览上传的文件

// first get the count of how many files are uploaded
$numFiles = count(array_filter($_FILES['uploaded']['name']));

for ($i = 0; $i < $numFiles; ++$i) {
    $target_path = 'c:/temp/' . basename($_FILES['uploaded']['name'][$i]);
    if(move_uploaded_file($_FILES['uploaded']['tmp_name'][$i], $target_path)) {
        echo "the file ".basename($_FILES['uploaded']['name'][$i])." has been uploaded<br />";
    }
}
//首先获取上载的文件数
$numFiles=count(数组_过滤器($_文件['upload']['name']);
对于($i=0;$i<$numFiles;++$i){
$target_path='c:/temp/'.basename($_文件['upload']['name'][$i]);
如果(移动上传的文件($上传的文件['Upload']['tmp\U name'][$i],$target\U路径)){
回显“文件”。basename($_FILES['upload']['name'][$i])”已上载
; } }
注意我是如何在
for
循环中使用
$I
来跟踪当前文件的索引的


(如果您想知道为什么我调用了
array\u filter()
来获取计数,那么如果您不上载任何文件,则似乎会自动存在一个空白条目。
array\u filter()
删除该空白/无效条目。)

[]
添加到输入字段的名称中,如下所示:

<input type="file" name="uploaded[]" multiple="" />
每个数组中的索引
0
是一个文件,每个数组中的索引
1
是下一个文件,依此类推


这也是获取同名多个复选框的值的方法。(参见示例)


以下是如何循环浏览上传的文件

// first get the count of how many files are uploaded
$numFiles = count(array_filter($_FILES['uploaded']['name']));

for ($i = 0; $i < $numFiles; ++$i) {
    $target_path = 'c:/temp/' . basename($_FILES['uploaded']['name'][$i]);
    if(move_uploaded_file($_FILES['uploaded']['tmp_name'][$i], $target_path)) {
        echo "the file ".basename($_FILES['uploaded']['name'][$i])." has been uploaded<br />";
    }
}
//首先获取上载的文件数
$numFiles=count(数组_过滤器($_文件['upload']['name']);
对于($i=0;$i<$numFiles;++$i){
$target_path='c:/temp/'.basename($_文件['upload']['name'][$i]);
如果(移动上传的文件($上传的文件['Upload']['tmp\U name'][$i],$target\U路径)){
回显“文件”。basename($_FILES['upload']['name'][$i])”已上载
; } }
注意我是如何在
for
循环中使用
$I
来跟踪当前文件的索引的


(如果您想知道为什么我调用了
array\u filter()
来获取计数,那么如果您不上载任何文件,则似乎会自动存在一个空白条目。
array\u filter()
删除该空白/无效条目。)

如果您在运行后检查上载/目录,有多少个文件?如果只有1个,则可能在每个连续循环中覆盖第一个文件。如果这三个文件都在,那么…这是另一个问题。只有一个文件。我如何解决此重写问题。请告诉我您在运行后是否检查上载/目录,h有多少个文件?如果只有1个,可能在每个连续循环中都会覆盖第一个文件。如果这三个文件都有…好吧…这是另一个问题。只有一个文件。我如何解决这个重写问题。请告诉这个dnt工作。即使它通过添加1(如daynay.jpg1)将文件更改为currupt。并且只有一个文件是transf此dnt工作时出错。即使它通过添加1(如daynay.jpg1)将文件更改为currupt,但只有一个文件被转换为beforeWarning:basename()希望参数1为字符串,数组在第20行的/var/www/dev01/maiarn/mail.php中给出警告:move\u uploaded\u File()参数1应为字符串,数组在第22行的/var/www/dev01/maiarn/mail.php中给出$target\u path=$target\u path.basename($file['name']);if(move\u upload\u file($file['tmp\u name'],$target\u path))这是错误出现的两行。@HanyaIdrees您不能只按原样传递数组;您需要在数组中循环并分别移动每个文件。我将添加一个示例。为了澄清,多个文件不会在
$\u文件
数组中显示为不同的条目;它们都将显示在“上载”下
$\u文件中的条目
。我是新来的,所以不明白。你能给出一些示例代码吗?如何做loop@HanyaIdrees好的,我刚刚添加了一个循环示例。我希望这有帮助。:-)警告:basename()希望参数1是字符串,数组在第20行的/var/www/dev01/maiarn/mail.php中给出警告:move\u uploaded\u file()参数1应为字符串,数组在/var/www/dev01/maiarn/mail.php第22行$target_path=$target_path.basename($file['name']);if(move_uploaded_file($file['tmp_name'],$target_path))中给出,这是e