2016-11-09 7 views
0

ユーザーが1つのファイルをアップロードできるフォームを使用していますが、4つのファイルをアップロードできるようにしようとしています。私は例の負荷をしようとしたファイルは私の電子メールに送信されます。この単一の添付ファイルのアップロード以外の仕事に何かを得ることに何の運を持っていなかった:複数の添付ファイルを作成する

HTML:

<form enctype="multipart/form-data" action="send_attachments_email.php" method="post"> 
<label for="message">Message</label> <textarea name="message" id="message" cols="20" rows="8"></textarea> 
<label for="file">File</label> <input type="file" name="file" id="file"> 
<input type="submit" name="submit" id="submit" value="send"> 
</form> 

PHP:

<?php 
    if(isset($_POST['submit'])) 
    { 
     //The form has been submitted, prep a nice thank you message 
     $output = '<h1>Thanks for your file and message!</h1>'; 
     //Set the form flag to no display (cheap way!) 
     $flags = 'style="display:none;"'; 

     //Deal with the email 
     $to = '[email protected]'; 
     $subject = 'a file for you'; 

     $message = strip_tags($_POST['message']); 
     $attachment = chunk_split(base64_encode(file_get_contents($_FILES['file']['tmp_name']))); 
     $filename = $_FILES['file']['name']; 

     $boundary =md5(date('r', time())); 

     $headers = "From: [email protected]\r\nReply-To: [email protected]"; 
     $headers .= "\r\nMIME-Version: 1.0\r\nContent-Type: multipart/mixed; boundary=\"_1_$boundary\""; 

     $message="This is a multi-part message in MIME format. 

--_1_$boundary 
Content-Type: multipart/alternative; boundary=\"_2_$boundary\" 

--_2_$boundary 
Content-Type: text/plain; charset=\"iso-8859-1\" 
Content-Transfer-Encoding: 7bit 

$message 

--_2_$boundary-- 
--_1_$boundary 
Content-Type: application/octet-stream; name=\"$filename\" 
Content-Transfer-Encoding: base64 
Content-Disposition: attachment 

$attachment 
--_1_$boundary--"; 

     mail($to, $subject, $message, $headers); 
    } 
?> 

ファイルを配列にする必要がありますが、PHPはまだ動作しますか?それとも最善の方法は何ですか?

ありがとうございます!

+0

私は、アレイ持つようにPHPを変更しようとしている: '$ファイル名= $ _FILES [ '[]ファイルを'] [ '名前'] [ '0']; \t \t $ filename1 = $ _FILES ['file []'] ['name'] ['1']; \t \t $ filename2 = $ _FILES ['file []'] ['name'] ['2']; \t \t $ filename3 = $ _FILES ['file []'] ['name'] ['3']; 'これは何も送信しません。 – Bethfiander

+0

複数のファイルを選択できますか? – TheTom

+0

お返事ありがとうございます。はい、私はWebページ上で複数のファイルを選択することができますが、私がsendを押すと、私は空白の電子メールを受け取ります。貼り付けたコードを使用すると、1枚の写真で電子メールを受け取ることができますが、配列を追加しようとすると空白が表示されます。 – Bethfiander

答えて

0

入力の名前は、複数の値があること/配列が予想されることを示す必要があります。 <input type="file" name="file" id="file"><input type="file" name="file[]" id="file">に変更してみてください。

http://php.net/manual/en/features.file-upload.multiple.php

+0

こんにちはカイルは、応答とリンクのための多くのおかげで、リンクはメールではなくサーバーにアップロードされているようです。私はこれをやってみました: ''これは私のPHPで以下のように変更されました: '$ attachment = chunk_split(base64_encode(file_get_contents($ _ FILES [ファイル '] [' tmp_name '] [0])))); $ filename = $ _FILES ['file []'] ['name'] [0]; ' 電子メールは届いていますが、アップロード時に画像ではなく作成された添付ファイルを私に渡しています。配列 - 私はPHPで何かを見逃している、またはそれは完全に間違っていますか?ありがとう – Bethfiander

+0

ああ、私は見るので、これは非常に異なる問題です。 [PHP mailer](https://github.com/PHPMailer/PHPMailer)などのライブラリを使用できますか? PHPのメール機能を使って添付ファイルを送信するのはちょっと難しいかもしれません... http://stackoverflow.com/a/27565430でライブラリーを見ることができない場合 – kyle

関連する問題