未选择附件时,带有电子邮件通知的PHP表单发送bin文件

时间:2018-08-13 11:58:33

标签: php forms email

这是仅发送附件的php代码

 $attachment = chunk_split(base64_encode(file_get_contents($_FILES['file_to_upload']['tmp_name'])));
 $filename = $_FILES['file_to_upload']['name'];
 $boundary =md5(date('r', time())); 
 $headers = "From: $from \r\nReply-To: $from ";
 $headers .= "\r\nMIME-Version: 1.0\r\nContent-Type: multipart/mixed; boundary=\"_1_$boundary\"";
 $body.="This is a multi-part message in MIME format.

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

--_2_$boundary
Content-Type: text/html; charset=\"UTF-8\"
Content-Transfer-Encoding: 7bit



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





$attachment
--_1_$boundary--";

它在发送附件时起作用,但是当用户不想选择任何附件时,它将在电子邮件中发送一些Part2.bin文件。如何克服呢?未选择文件时不发送任何内容

1 个答案:

答案 0 :(得分:0)

可以在HTML中设置表单控件,以用required attribute标记时需要。

当表单控件(例如 HTML元素)被标记为必填项时,除非用户设置值,否则不会提交该表单用于操作。

以上内容有助于防止在没有用户选择文件的情况下在客户端提交表单。

在事物的服务器端方面,文件的全局$_FILES将包含一个“错误”密钥,当没有错误时,该密钥将设置为0UPLOAD_ERR_OK)。 可以检查的错误代码为documented here

您可以通过以下方式对此进行检查:

if ($_FILES["file_to_upload"]["error"] === UPLOAD_ERR_OK) {
    // send email
} else {
    // don't send email
}

没有文件上传的情况的特殊情况也为真。

if ($_FILES["file_to_upload"]["error"] === UPLOAD_ERR_NO_FILE) {
    // don't send email
} else {
    // send email
}