954,576 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?
Have something to say? Contribute New Article Reply to this Article

File Attachment Small Problem

Hi

I've been trying to get a email form which allows my users to send photos as an attachemt via a "upload" button. I've got it working i.e. the form is sending me the data plus the photos, but I'm still getting this error when "submit" is pressed.

Notice: Undefined variable: fileatt_name in d:\inetpub\mm.models121.co.uk\uploader.php on line 94

This is line 94 of my code :

" filename=\"{$fileatt_name}\"\n" .

I'm not sure what is going on here.

Anybody got any ideas?

Leroy

leroytrolley
Newbie Poster
7 posts since Oct 2005
Reputation Points: 10
Solved Threads: 0
 


<?php
if ($_SERVER['REQUEST_METHOD']=="POST"){

// we'll begin by assigning the To address and message subject
$to="lee@leeosullivan.com";
$subject="Modeling Photos";

// get the sender's name and email address
// we'll just plug them a variable to be used later
$from = stripslashes($_POST['fromname'])." < ".stripslashes($_POST['fromemail'])." >";

// generate a random string to be used as the boundary marker
$mime_boundary="==Multipart_Boundary_x".md5(mt_rand())."x";

// now we'll build the message headers
$headers = "From: $from\r\n" .
"MIME-Version: 1.0\r\n" .
"Content-Type: multipart/mixed;\r\n" .
" boundary=\"{$mime_boundary}\"";

// here, we'll start the message body.
// this is the text that will be displayed
// in the e-mail
$message="These photos have been sent by {$from} ";

// next, we'll build the invisible portion of the message body
// note that we insert two dashes in front of the MIME boundary
// when we use it
$message = "This is a multi-part message in MIME format.\n\n" .
"--{$mime_boundary}\n" .
"Content-Type: text/plain; charset=\"iso-8859-1\"\n" .
"Content-Transfer-Encoding: 7bit\n\n" .
$message . "\n\n";

// now we'll process our uploaded files
foreach($_FILES as $userfile){
// store the file information to variables for easier access
$tmp_name = $userfile['tmp_name'];
$type = $userfile['type'];
$name = $userfile['name'];
$size = $userfile['size'];

// if the upload succeded, the file will exist
if (file_exists($tmp_name)){

// check to make sure that it is an uploaded file and not a system file
if(is_uploaded_file($tmp_name)){

// open the file for a binary read
$file = fopen($tmp_name,'rb');

// read the file content into a variable
$data = fread($file,filesize($tmp_name));

// close the file fclose($file); // now we encode it and split it into acceptable length lines $data = chunk_split(base64_encode($data)); } // now we'll insert a boundary to indicate we're starting the attachment // we have to specify the content type, file name, and disposition as // an attachment, then add the file content. // NOTE: we don't set another boundary to indicate that the end of the // file has been reached here. we only want one boundary between each file // we'll add the final one after the loop finishes. $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"; } } // here's our closing mime boundary that indicates the last of the message $message.="--{$mime_boundary}--\n"; // now we just send the message if (@mail($to, $subject, $message, $headers)) echo "Thank you for posting your photos to Models 121. We will be in touch very soon."; else echo "Failed to send"; } else { ?> logoforflashcards.jpg Photo uploading page.

To complete your application, please send us at least 10 of your best photos.





Your Name:  

 
 
Your E-Mail: 

 
 
 
 
 
Photo 1 :


Photo 6 :

Photo 2 :


Photo 7 :

Photo 3 :


Photo 8 :

Photo 4 :


Photo 9 :

Photo 5 :


Photo 10 :

 

 

 




<?php } ?>

leroytrolley
Newbie Poster
7 posts since Oct 2005
Reputation Points: 10
Solved Threads: 0
 

Like the error message makes perfectly clear, the variable is not defined anywhere before that call. Are you trying to send over the attachment's filename? Judging from your code, isn't that being stored in $name?

-Fredric

Daishi
Junior Poster in Training
80 posts since Aug 2005
Reputation Points: 10
Solved Threads: 2
 

Hi,
I am also coding the same but sending word and excel as attachment. If the explictly give the path name from server its working , but when i try to browse file from my PC its not working.
Email is send but if i open the attachment there is no text/content in it.
How do i need to open a file from my PC and attach through mail.

<form action="mail_attachment.php" method="POST" enctype="multipart/form-data">

<input type="file" name="fileatt">

<input type="submit">
</form>
$fileatt = "/home/myfile/public_html/myreport.xls"; // Path to the file 
$fileatt_type = "application/octet-stream"; // File Type 
$fileatt_name = "myreport.xls"; // Filename that will be used for the file as the attachment 

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

Insted of giving the path i need to browse from my PC.
Please help
Thanks.

dani_rosy
Newbie Poster
2 posts since Sep 2007
Reputation Points: 10
Solved Threads: 0
 

add a simple java script to upload file automatically to web server temp cache ( i meant to call upload file page ) and catch full path of the uploaded file then you will be able to do what you want..

fatihpiristine
Posting Whiz in Training
283 posts since Sep 2007
Reputation Points: 6
Solved Threads: 19
 

This article has been dead for over three months

Post: Markdown Syntax: Formatting Help
You