2016-08-26 8 views
-1

複数のファイルを一度に選択(<input type="file" name="my_file[]" multiple>)してメールで送信しようとしています。PHP/JS:1つで複数のファイルを選択して電子メールに送信

これまでのところ、私のコードはうまく機能していますが、多くの入力ボタンで、複数の選択肢があるボタンが1つ必要です。

アップロードファイル:

foreach($_FILES as $userfile){ 
    $tmp_name = $userfile['tmp_name']; 
    $type = $userfile['type']; 
    $name = $userfile['name']; 
    $size = $userfile['size']; 

    if (file_exists($tmp_name)){ 

    if(is_uploaded_file($tmp_name)){ 
     $file = fopen($tmp_name,'rb'); 
     $data = fread($file,filesize($tmp_name)); 
     fclose($file); 
     $data = chunk_split(base64_encode($data)); 
    } 

    $message .= "--{$mime_boundary}\n" . 
     "Content-Type: {$type};\n" . 
     " name=\"{$name}\"\n" . 
     "Content-Disposition: attachment;\n" . 
     " filename=\"{$fileatt_name}\"\n" . 
     "Content-Transfer-Encoding: base64\n\n" . 
    $data . "\n\n"; 
    } 
} 

実際のアップロード入力:

<input type="file" name="file1"> 
<input type="file" name="file2"> 
+0

私たちは、コードを見て、 "外部" 行っていません。関連する[MVCE](http://stackoverflow.com/help/mcve)をここに投稿してください。 –

+0

質問が更新されました。 – Clementine

答えて

0

あなたはHTML5にmultiple属性を持っています。

複数のファイルをアップロードする際に、$ _FILES変数は形式で作成され
<input type="file" name="files" multiple> 

:上

Array 
(
    [name] => Array 
     (
      [0] => foo.txt 
      [1] => bar.txt 
     ) 

    [type] => Array 
     (
      [0] => text/plain 
      [1] => text/plain 
     ) 

    [tmp_name] => Array 
     (
      [0] => /tmp/phpYzdqkD 
      [1] => /tmp/phpeEwEWG 
     ) 

    [error] => Array 
     (
      [0] => 0 
      [1] => 0 
     ) 

    [size] => Array 
     (
      [0] => 123 
      [1] => 456 
     ) 
) 

最初のコメント:http://php.net/manual/en/features.file-upload.multiple.php

+0

はい、わかります。しかし、複数のアップロード入力で選択されたファイルをどのように送信するのですか?私のコードは入力によって1つのファイルを送信します。 – Clementine

+0

「実際のアップロード入力」のコードには複数の属性が含まれていないため、一度に1つのファイルしか選択できません。 – HtmHell

+0

私はすでにそれをしましたが、選択したファイルを電子メールに送信しようとすると、最後のファイルのみが送信されます。 – Clementine

関連する問題