summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Kohler <ivan@freeside.biz>2014-07-26 16:56:05 -0700
committerIvan Kohler <ivan@freeside.biz>2014-07-26 16:56:05 -0700
commit01af84c2028da7c7607c3936e01a72725bb6a1f2 (patch)
treeda4ed7f38ac1bd02bf32c7497b2fbc4e9656a73e
parent73641bbccaf310777a01dcfc17d7f60e2757e73a (diff)
fix firefox attachment downloads with spaces, RT#30167
-rw-r--r--httemplate/view/attachment.html19
1 files changed, 15 insertions, 4 deletions
diff --git a/httemplate/view/attachment.html b/httemplate/view/attachment.html
index 5827e3d20..4c4ca5638 100644
--- a/httemplate/view/attachment.html
+++ b/httemplate/view/attachment.html
@@ -1,15 +1,26 @@
<%init>
+$FS::CurrentUser::CurrentUser->access_right('Download attachment')
+ or die 'access denied';
+
my ($query) = $cgi->keywords;
$query =~ /^(\d+)$/;
my $attachnum = $1 or die 'Invalid attachment number';
-$FS::CurrentUser::CurrentUser->access_right('Download attachment') or die 'access denied';
-
-my $attach = qsearchs('cust_attachment', { attachnum => $attachnum }) or die "Attachment not found: $attachnum";
+my $attach = qsearchs('cust_attachment', { attachnum => $attachnum })
+ or die "Attachment not found: $attachnum";
die 'access denied' if $attach->disabled;
$r->subprocess_env('no-gzip' => 1); # disable mod_deflate
+
$m->clear_buffer;
+
$r->content_type($attach->mime_type || 'text/plain');
-$r->headers_out->add('Content-Disposition' => 'attachment;filename=' . $attach->filename);
+
+my $filename = $attach->filename;
+$filename =~ s/"/'/g; #no idea how to encode " ... \" ? "" ? can't?
+$r->headers_out->add(
+ 'Content-Disposition' => qq(attachment;filename="$filename")
+);
+
$m->print($attach->body);
+
</%init>