我使用以下循环将多个附件发送/附加到我的电子邮件中。
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按钮附加的文件,而不是其他文件。 帮助
答案 0 :(得分:1)
问题是您要将新name
元素的input
属性设置为attachment1
,attachment2
等。您应该将此名称设置为{{ 1}},就像您创建的原始attachment[]
一样。
如果您仍然没有获得所有附件,可以在PHP脚本中尝试input
,以确保以您期望的方式获取所有文件。