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

时间:2012-03-27 11:39:43

标签: php javascript phpmailer

我使用以下循环将多个附件发送/附加到我的电子邮件中。

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>

当单击“附加另一个文件”时,将通过JavaScript函数显示另一个“文件上载”按钮:

<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按钮附加的文件,而不是其他文件。 帮助

1 个答案:

答案 0 :(得分:1)

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

如果您仍然没有获得所有附件,可以在PHP脚本中尝试input,以确保以您期望的方式获取所有文件。