Jump to content


Photo

uploading picture files from a PHP form as an attachment


  • Please log in to reply
3 replies to this topic

#1 wholein1

wholein1
  • New Members
  • Pip
  • Newbie
  • 5 posts

Posted 14 September 2006 - 02:51 AM

I would like to have an file upload on my web site that for both text and pictures (jpg, Gif, etc..). I have found and modified the two to work.
1. write the files to a data base MYSQL
2. send the files through an email.

The problem I am having is getting the files to come to me a picture (jpg, gif file. it comes as some wild code writing.

Sample:Content-Type: multipart/mixed;

boundary="==Multipart_Boundary_x8c5a55f00dfacf62b9b9d3505b535d56x"

This is a multi-part message in MIME format.

--==Multipart_Boundary_x8c5a55f00dfacf62b9b9d3505b535d56x
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: 7bit

This is an example

--==Multipart_Boundary_x8c5a55f00dfacf62b9b9d3505b535d56x
Content-Type: image/pjpeg;
name="fish.jpg"
Content-Disposition: attachment;
filename=""
Content-Transfer-Encoding: base64

/9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAPAAA/+4ADkFkb2JlAGTAAAAAAf/b

AIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoKDBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxsc

Hx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f

Hx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgBDAD6AwERAAIRAQMRAf/EAI8AAQEBAAIDAQEAAAAAAAAA

AAAHCAUGAQIECQMBAQAAAAAAAAAAAAAAAAAAAAAQAAEDAgMDBA8FBAcFCQAAAAEAAgMEBREGByEx

EkGVFwhRYSIyE9MUVNR1tSZWN9eBQmIjFXGRoRbBUnKCM1MkomNzNDXwsZKywoOjJVURAQAAAAAA

AAAAAAAAAAAAAAD/2gAMAwEAAhEDEQA/AKpnaeiv+e8o5bu9DT3C1G6zyy0lVEyaF5jtFeW8Ucgc

12DsHDEbwg7V0T6WfBtj5tpPFoHRPpZ8G2Pm2k8WgdE+lnwbY+baTxaB0T6WfBtj5tpPFoHR
12DsHDEbwg7V0T6WfBtj5tpPFoHRPpZ8G2Pm2k8WgdE+lnwbY+PpZ8

G2Pm2k8WgdE+lnwbY+baTxaB0T6WfBtj5tpPFoHRPpZ8G2Pm2k8WgdE+lnwbY+baTxaB0T6W
G2Pm2k8WgdE+lnwbY+baTxaB0T6WfBtj5tpPFoHRPpZ8G2Pm2k8WgdE+lnwbY+fBtj

Can you pleae help give me direction to solve the issue. I am new to PHP.

Thank you
Jeff



#2 btherl

btherl
  • Staff Alumni
  • Advanced Member
  • 3,893 posts
  • LocationAustralia

Posted 14 September 2006 - 04:05 AM

I can help you a little..

The function base64_decode() will decode that gibberish you see.  It needs to be called directly on the gibberish though, and not on the entire email. (notice the "Content-Transfer-Encoding: base64" - That tells you to use base64_decode on the text below)

The rest of the format is called MIME.  I'm not aware of any PHP functions to decode that for you.

#3 Zane

Zane
  • Administrators
  • Advanced Member
  • 4,134 posts

Posted 14 September 2006 - 04:32 AM

are you displaying your picture like this?
$imgsrc="fish.jpg"
imagejpeg($imgsrc);

btn_donate_SM.gif Want to thank me? Contribute to my PayPal piggy-bank
 

172938.png

#4 wholein1

wholein1
  • New Members
  • Pip
  • Newbie
  • 5 posts

Posted 14 September 2006 - 01:06 PM

hello here is the code for the attachnent. I see the base 64 applied toward the latter end. It may be that it is set in the wrong place.

Iam not sure of what to do with the $imgsrc="fish.jpg"
imagejpeg($imgsrc);

keep in mind I am new at PHP. Iam learning how by finding the code and modifying it to fit my needs. If there is a better way please let me know. Wgat I am wanting to do is to have set up on my site a place for people to upload text files and images.

I have two ways of doing this and one is to email me the attachment and the other is put it through Mysql database or I have seen another way and that is to upload it to my server. suggestions are welcomed.


This is the one for sening through an email.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
  "http://www.w3.org/TR...ml4/loose.dtd">
<html>
<head>
<title>E-mail with Attachment</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<?php
if ($_SERVER['REQUEST_METHOD']=="POST"){

  // we'll begin by assigning the To address and message subject
  $to="administration@cafeexpress-o.com";
  $subject="E-mail with attachment";

  // 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="This is an example";

  // 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 "Message Sent";
  else
      echo "Failed to send";
} else {
?>
<p>Send an e-mail with an attachment:</p>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"
  enctype="multipart/form-data" name="form1">
  <p>From name: <input type="text" name="fromname"></p>
  <p>From e-mail: <input type="text" name="fromemail"></p>
  <p>File: <input type="file" name="file1"></p>
  <p>File: <input type="file" name="file2"></p>
  <p><input type="submit" name="Submit" value="Submit"></p>
</form>
<?php } ?>
</body>
</html>





0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users