简体   繁体   中英

Submit PDF filled form to PHP script then email PDF as an attachment

I have this script that it was posted a while back and it works, but ... In Safari works find (goes through the browser) not problem. FireFox & Opera forces you to open Acrobat reader. When you submit from Acrobat Reader (stand along) the php script submits sends the email with attachment but Acrobat Reader hangs "receiving data..." then times out. Email with attachment work fine. Chrome opens within browser submits the pdf but stays on the pdf page does not redirect. The attachment send from Chrome comes in the email but it is empty, the pdf file does not open. My question is: What is Acrobat Reader waiting to receive? and What is going on with Chrome?

Here is the code

$fileatt = date("d-m-Y-His") . ".pdf";  // Creates unique PDF name from the date 
copy('php://input',"pdfs/".$fileatt); // Copies the pdf form data to a folder named pdfs 
$fileatt = "pdfs/".$fileatt; // Path to the file gives the pdfs folder plus the unique       file name we just assigned
$fileatt_type = "application/pdf"; // File Type 
$fileatt_name = "Application Form_".$fileatt.".pdf"; // Filename that will be used for the   file as the attachment when it is sent

$email_from = "mywebsite"; // Who the email is from 
$email_subject = "Completed online Applications"; // The Subject of the email 
$email_message = "Please find a recent online application attached.
";
$email_message .= "Any problems please email me...
"; // Message that the email has in it 

$email_to = "youremail@yourserver.com"; // Who the email is to 

$headers = "From: ".$email_from;

//no need to change anything else under this point

$file = fopen($fileatt,'rb'); 
$data = fread($file,filesize($fileatt)); 
fclose($file); 

$semi_rand = md5(time()); 
$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x"; 

$headers .= "\nMIME-Version: 1.0\n" . 
"Content-Type: multipart/mixed;\n" . 
" boundary=\"{$mime_boundary}\""; 

$email_message .= "This is a multi-part message in MIME format.\n\n" . 
"--{$mime_boundary}\n" . 
"Content-Type:text/html; charset=\"iso-8859-1\"\n" . 
"Content-Transfer-Encoding: 7bit\n\n" . 
$email_message .= "\n\n"; 

$data = chunk_split(base64_encode($data)); 

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

$ok = @mail($email_to, $email_subject, $email_message, $headers); 

if($ok) { 
  unlink($fileatt); //NOW WE DELETE THE FILE FROM THE FOLDER pdfs 
  Header("Location: nextpage.php"); //where do we go once the form has been submitted.

} else { 
  die("Sorry but the email could not be sent. Please go back and try again!"); 
} 

Acrobat Reader is waiting for data... any data. Echo something which acknowledges receipt of the form. Chrome is sending an FDF, not a PDF. I don't think the attachment would actually be empty, but it's got to be able to open the PDF referred to in the FDF.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM