I haven't been able to identify what process actually truncates the file. All I know is that it's not my mailserver. I don't believe it's in the coding either, as both Perl and PHP do this, and both work great otherwise. Anyhow:
This reads the file from the form: function get_file($filename){ $return = ''; if($fp = fopen($filename, 'rb')){ while(!feof($fp)){ $return .= fread($fp, 1024); } fclose($fp); return $return; }else{ return FALSE; } } This adds any files to a list of attachments: function add_attachment($file, $name = '', $c_type='application/octet-stream', $encoding = 'base64'){ $this->attachments[] = array( 'body' => $file, 'name' => $name, 'c_type' => $c_type, 'encoding' => $encoding ); } This adds a MIME subpart for the attachment: function &add_attachment_part(&$obj, $value){ $params['content_type'] = $value['c_type']; $params['encoding'] = $value['encoding']; $params['disposition'] = 'attachment'; $params['dfilename'] = $value['name']; $obj->addSubpart($value['body'], $params); } This is out of the build mail function, adding the text and attachments to an e-mail: case $text AND $attachments: $message =& $this->add_mixed_part(); $this->add_text_part($message, $this->text); for($i=0; $i<count($this->attachments); $i++) $this->add_attachment_part($message, $this->attachments[$i]); break; Anything look wrong so far? Just in case this may help, here's the part of the Perl script that adds files to the e-mail. This script results in a truncation the same way as the PHP script: sub attachFilesToMail { my $type = shift; my $msg = shift; my $hasBody = shift; my ($key, $file); while (($key, $file) = each %{$CONFIG{$type}}) { ($debug) && print STDERR "examining attachment $key, $file\n"; next unless ($key =~ /(\d+)file/ && -f $file); my $attachNum = $1; $file =~ m!/([^/]+)$!; my $filename = $1; my $mime_type = $CONFIG{$type}->{"${attachNum}mime"}; ($debug) && print STDERR "Attaching a mime type of $mime_type for $filename ($key)\n"; unless ($mime_type) { $mime_type = (!$fhBug && -T $file) ? 'text/plain' : 'application/octet-stream'; } my @stats = stat($file); ($debug) && print STDERR "Attaching $file ($stats[7] bytes) " . "to email\n"; my $data = { Path => $file, ReadNow => 1, Filename => $filename }; unless ($mime_type =~ /^text\//) { $data->{'Encoding'} = "base64"; } if (!$hasBody) { $$msg->data("This is a MIME message with attachments"); } my $m = $$msg->attach(%$data); $m->attr("content-type" => $mime_type); } } -----Original Message----- From: Jason Wong [mailto:[EMAIL PROTECTED]] Sent: Sunday, April 21, 2002 12:10 AM To: [EMAIL PROTECTED] Subject: Re: [PHP] Attachments On Sunday 21 April 2002 06:02, Jason Soza wrote: > They actually vary as to where they become truncated - some are at 633 > bytes, some are at 1kb. The odd thing is that the PHP script I'm using to > process the form actually pics up the correct filesize, it reports it to me > under a $filesize variable I've setup. It'll report, say file2_filesize...: > 69147 but the actual attachment is 1kb. Please post your code. > Like I said, I have this same problem using both Perl scripts and PHP > scripts. In php.ini my post_max size is 8M and upload_max_filesize is 2M. > Looking through the Apache mailing list archives, it looks like others > running Apache on win32 have experienced the same problems, but there are > no answers. I'm a little stumped myself! Have you narrowed down the problem to whether the uploaded file is truncated or whether the mail attachment process truncates the file? -- Jason Wong -> Gremlins Associates -> www.gremlins.com.hk Open Source Software Systems Integrators * Web Design & Hosting * Internet & Intranet Applications Development * /* <<<<< EVACUATION ROUTE <<<<< */ -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php