2012-03-27 25 views
0

次のループを使用して複数の添付ファイルをメールに送信しています。JavaScript関数で追加された添付ファイルは送信されません

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); 
} 

私が作成した最初の添付ファイルのみが送信されます。

フォームコードが別のファイル、別のファイルアップロードボタンを取り付け上のワンクリックではJavaScript機能により、示され

<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> 

です:

<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

'file.setAttribute(" name "、" attachment [] ");'? 'に 'file.setAttribute(" name "、" attachment "+ upload_number);を変更しようとしましたか? – Prusse

+0

ありがとう、それは助けた。 –

答えて

1

問題はあなたがちょうどあなたが作成したオリジナルのinputのように、attachment[]にこの名前を設定する必要があるなど、attachment2attachment1に新しいinput要素のname属性を設定していることです。

あなたの添付ファイルがまだ届かない場合は、PHPスクリプトでvar_dump($_FILES)を試して、すべてのファイルが期待どおりに取得されていることを確認してください。

関連する問題