複数のファイル入力が必要なフォームを処理しようとしています(フォームの別の部分で)。私は$ _FILES ['attach']がすべてのファイルを正しく取得することを理解しているので、これと同じ名前(添付)のような各入力を設定しましたか?複数の入力添付ファイルPHP
<input type="file" class="file" name="attach[]" title="" dropzone="copy" multiple="multiple" required></input>
私はあなたがこれを確認してください可能性があり、多数のソースから一緒にこのPHPを石畳ました。それは送信しないので、明らかに私はどこかでいくつかのエラーを作りました。
(other variables not shown, but sanitized as well)
$attachments = $_FILES['attach'];
// email body
$mes_body = "<html><head></head><body>";
// $mes_body .= "<img src='http://www.domain.com/marketing/image.png' alt='Image' /><br /><br />"; (optional header image)
// Sanitize unknown input data
function sanitize(text) {
$san = filter_var(text, FILTER_SANITIZE_STRING);
return $san;
}
$mes_body .= "<br /><br />";
foreach ($_POST as $key => $value) { //define & insert unknown inputs into message body
if ($key != 'From' && $key != 'Subject' && $key != 'Filecheck') {
$mes_body .= sanitize($key) . ': ' . sanitize($value) . '<br />';
}
}
$mes_body .= "</body></html>";
// multipart email
$boundary = md5("text_for_hash");
if ($filecheck == 1) { // multipart email w/ attachment(s) & $filecheck=1 means files present
$headers = "MIME-Version: 1.0\r\n";
$headers .= "From: " . $from_email . "\r\n";
$headers .= "Reply-To: " . $from_email . "" . "\r\n";
$headers .= "Content-Type: multipart/mixed; boundary = $boundary\r\n\r\n";
// message text
$body = "--$boundary\r\n";
$body .= "Content-Type: text/html; charset=\"ISO-8859-1\"\r\n";
$body .= "Content-Transfer-Encoding: 8bit\r\n";
$body .= $mes_body;
$body .= "boundary = $boundary\r\n";
// attachment(s)
foreach ($attachments as $attachment) {
if ($attachment['size']) {
$body .= "\r\n" . $boundary;
$body .= "Content-Type: " . $attachment['type'] . "; name=\"". $attachment['filename'] . "\"\r\n";
$body .= "Content-Transfer-Encoding: base64\r\n\r\n";
$body .= $attachment['content'];
}
}
$body .= "boundary = $boundary\r\n";
$message_body = $mes_body;
}
else { // plain text email
$headers = "From: " . $from_email . "\r\n" . "Reply-To: " . $from_email . "\r\n" . "Content-type: text/html" . "\r\n" . "X-Mailer: PHP/" . phpversion();
$message_body = $mes_body;
}
$send_mail = mail($to_email, $subject, $message_body, $headers);
UPDATE: 取付部を中心に。私は右のようになりますいるFormDataに取り付ける前にいるFormData &典型的なキー/値のコンソール出力を使用しています:
Files1 & Files2はキー&ある私もメールにこれらを配置する必要があります。例:
Files1:(W/Files1関連するすべてのファイルを添付)
Files2:(W/Files2関連するすべてのファイルを添付)
注:彼らはユーザーであるとして、私は、事前にキーの名前を知ることができません定義される。それはすでにいるFormDataだとして
誰かが、取付部のためにこれを提案した:今のフォームは黙っ&を提出さ
// attachment(s)
foreach ($_FILES as $attachment) {
$name = $attachment["tmp_name"];
if ($attachment["size"]) {
$body .= "--$boundary\r\n";
$body .= "Content-Type: " . $attachment["type"] . "; name=\"" . $name . "\"; Content-Disposition: attachment" . "\r\n";
$body .= "Content-Transfer-Encoding: base64\r\n\r\n";
echo $attachment . "<br />";
}
}
私は何がサーバー上のerror_logされ表示されません。私は間違って何をしていますか?コードの修正は高く評価されます。
@u_mulderフォームの別の部分に役立つように、これを手伝ってもらえますか? – parti