Index: lib/RT/Interface/Web.pm =================================================================== --- lib/RT/Interface/Web.pm (revision 6360) +++ lib/RT/Interface/Web.pm (working copy) @@ -765,26 +765,31 @@ if ( $args{'AttachmentFieldName'} ) { my $cgi_object = $m->cgi_object; + my ($filehandle, $filename, $mimetype); - if ( my $filehandle = $cgi_object->upload( $args{'AttachmentFieldName'} ) ) { + if (ref($cgi_object) eq 'CGI::Simple') { + $filename = $cgi_object->param($args{'AttachmentFieldName'}); + $filehandle = $cgi_object->upload($filename); + $mimetype = $cgi_object->upload_info($filename, 'mime'); + } else { + $filehandle = $cgi_object->upload($args{'AttachmentFieldName'}); + $mimetype = $cgi_object->uploadInfo($filehandle)->{'Content-Type'}; + # Prefer the cached name first over CGI.pm stringification. + $filename = $RT::Mason::CGI::Filename; + $filename = "$filehandle" unless defined($filename); + } + if ( $filehandle ) { + my (@content,$buffer); while ( my $bytesread = read( $filehandle, $buffer, 4096 ) ) { push @content, $buffer; } - my $uploadinfo = $cgi_object->uploadInfo($filehandle); - - # Prefer the cached name first over CGI.pm stringification. - my $filename = $RT::Mason::CGI::Filename; - $filename = "$filehandle" unless defined($filename); - $filename =~ s#^.*[\\/]##; - - $Message->attach( - Type => $uploadinfo->{'Content-Type'}, + Type => $mimetype, Filename => Encode::decode_utf8($filename), Data => \@content, ); @@ -1491,17 +1496,26 @@ sub _UploadedFile { my $arg = shift; my $cgi_object = $m->cgi_object; - my $fh = $cgi_object->upload($arg) or return undef; - my $upload_info = $cgi_object->uploadInfo($fh); + my ($fh, $filename, $mimetype); - my $filename = "$fh"; + if (ref($cgi_object) eq 'CGI::Simple') { + $filename = $cgi_object->param($arg); + $fh = $cgi_object->upload($filename) or return undef; + $mimetype = $cgi_object->upload_info($filename, 'mime'); + } + else { + $fh = $cgi_object->upload($arg) or return undef; + $mimetype = $cgi_object->uploadInfo($fh)->{'Content-Type'}; + $filename = "$fh"; + } + $filename =~ s#^.*[\\/]##; binmode($fh); return { Value => $filename, LargeContent => do { local $/; scalar <$fh> }, - ContentType => $upload_info->{'Content-Type'}, + ContentType => $mimetype, }; }