diff options
author | Ivan Kohler <ivan@freeside.biz> | 2014-07-26 16:56:05 -0700 |
---|---|---|
committer | Ivan Kohler <ivan@freeside.biz> | 2014-07-26 16:56:05 -0700 |
commit | 01af84c2028da7c7607c3936e01a72725bb6a1f2 (patch) | |
tree | da4ed7f38ac1bd02bf32c7497b2fbc4e9656a73e | |
parent | 73641bbccaf310777a01dcfc17d7f60e2757e73a (diff) |
fix firefox attachment downloads with spaces, RT#30167
-rw-r--r-- | httemplate/view/attachment.html | 19 |
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> |