Вложения, добавленные с помощью функции JavaScript, не отправляются - PullRequest
0 голосов
/ 27 марта 2012

Я использую следующий цикл для отправки / вложения нескольких вложений в мое сообщение электронной почты.

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 Ответ

1 голос
/ 27 марта 2012

Проблема в том, что вы устанавливаете атрибут name вашего нового элемента input на attachment1, attachment2 и т. Д. Вы должны установить это имя на attachment[], так же, как оригинал input Вы создали.

Если вы все еще не получили все свои вложения, вы можете попробовать var_dump($_FILES) в своем PHP-скрипте, чтобы убедиться, что вы получаете все файлы так, как вы ожидаете.

...