通过JavaScript函数添加的附件不会发送


Attachments added through JavaScript function are not sent

我正在使用以下循环向我的电子邮件发送/附加多个附件。

foreach(array_keys($_FILES['attachment']['name']) as $key) {
    $source = $_FILES['attachment']['tmp_name'][$key]; 
    $filename = $_FILES['attachment']['name'][$key]; // original filename from the client
    $mail->AddAttachment($source, $filename);
}

但只有我制作的第一个附件被发送了。

表单代码为

<form method="POST" action="<?php $PHP_SELF ?>"  enctype="multipart/form-data">
<input type="file" name="attachment[]" id="attachment" size="30"
onchange="document.getElementById('moreUploadsLink').style.display = 'block';" />
<div id="moreUploads"></div>
<div id="moreUploadsLink" style="display:none;">
<a href="javascript:addFileInput();">Attach another File</a></div>
<input name="submit" type="submit" value="submit" />
</form>

当点击Attach another file(附加另一个文件)时,会通过JavaScript函数显示另一个file Upload(文件上传)按钮:

<script type="text/javascript">
var upload_number = 1;
var attachmentlimit = 5;
function addFileInput() {
    var d = document.createElement("div");
    var file = document.createElement("input");
    file.setAttribute("type", "file");
    file.setAttribute("name", "attachment"+upload_number);
    d.appendChild(file);
    document.getElementById("moreUploads").appendChild(d);
    upload_number++;
    if(upload_number == attachmentlimit) {
          document.getElementById('moreUploadsLink').style.display='none';
    }
}
</script>

只有通过第一个FileUpload按钮附加的文件才被附加和发送,而不是其他文件。帮助

问题是您将新input元素的name属性设置为attachment1attachment2等。您应该将此名称设置为attachment[],就像您创建的原始input一样。

如果你仍然没有得到所有的附件,你可以在你的PHP脚本中尝试var_dump($_FILES),以确保你以你期望的方式得到所有的文件。