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

Reply via email to