%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2014 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
<%perl>
my ($ticket, $trans,$attach, $filename);
my $arg = $m->dhandler_arg; # get rest of path
- if ($arg =~ '^(\d+)/(\d+)') {
+ if ($arg =~ m{^(\d+)/(\d+)}) {
$trans = $1;
$attach = $2;
}
else {
Abort("Corrupted attachment URL.");
}
- my $AttachmentObj = new RT::Attachment($session{'CurrentUser'});
+ my $AttachmentObj = RT::Attachment->new($session{'CurrentUser'});
$AttachmentObj->Load($attach) || Abort("Attachment '$attach' could not be loaded");
my $content_type = $AttachmentObj->ContentType || 'text/plain';
if (RT->Config->Get('AlwaysDownloadAttachments')) {
- $r->headers_out->{'Content-Disposition'} = "attachment; filename=" . $AttachmentObj->Filename;
+ $r->headers_out->{'Content-Disposition'} = "attachment";
}
elsif (!RT->Config->Get('TrustHTMLAttachments')) {
$content_type = 'text/plain' if ($content_type =~ /^text\/html/i);
my $enc = $AttachmentObj->OriginalEncoding || 'utf-8';
my $iana = Encode::find_encoding( $enc );
$iana = $iana? $iana->mime_name : $enc;
- $content_type .= ";charset=$iana";
- # unless (RT->Config->Get('TrustMIMEAttachments')) {
- # $content_type = 'application/octet-stream';
- # }
+ require MIME::Types;
+ my $mimetype = MIME::Types->new->type($content_type);
+ unless ( $mimetype && $mimetype->isBinary ) {
+ $content_type .= ";charset=$iana";
+ }
+ $r->subprocess_env('no-gzip' => 1); # disable mod_deflate
$r->content_type( $content_type );
$m->clear_buffer();
$m->out($AttachmentObj->OriginalContent);