Revision be944d27
Von Sven Schöling vor mehr als 5 Jahren hinzugefügt
SL/Controller/Base.pm | ||
---|---|---|
use Carp;
|
||
use IO::File;
|
||
use List::Util qw(first);
|
||
use MIME::Base64;
|
||
use SL::Request qw(flatten);
|
||
use SL::MoreCommon qw(uri_encode);
|
||
use SL::Presenter;
|
||
... | ... | |
my $attachment_name = $params{name} || (!ref($file_name_or_content) ? $file_name_or_content : '');
|
||
$attachment_name =~ s:.*//::g;
|
||
|
||
print $::form->create_http_response(content_type => $content_type,
|
||
content_disposition => 'attachment; filename="' . $attachment_name . '"',
|
||
content_length => $size);
|
||
|
||
if (!ref $file_name_or_content) {
|
||
$::locale->with_raw_io(\*STDOUT, sub { print while <$file> });
|
||
$file->close;
|
||
unlink $file_name_or_content if $params{unlink};
|
||
if ($::request->is_ajax || $params{ajax}) {
|
||
my $octets = ref $file_name_or_content ? $file_name_or_content : \ do { local $/ = undef; <$file> };
|
||
$self->js->save_file(MIME::Base64::encode_base64($$octets), $content_type, $size, $attachment_name)->render;
|
||
} else {
|
||
$::locale->with_raw_io(\*STDOUT, sub { print $$file_name_or_content });
|
||
print $::form->create_http_response(content_type => $content_type,
|
||
content_disposition => 'attachment; filename="' . $attachment_name . '"',
|
||
content_length => $size);
|
||
|
||
if (!ref $file_name_or_content) {
|
||
$::locale->with_raw_io(\*STDOUT, sub { print while <$file> });
|
||
$file->close;
|
||
unlink $file_name_or_content if $params{unlink};
|
||
} else {
|
||
$::locale->with_raw_io(\*STDOUT, sub { print $$file_name_or_content });
|
||
}
|
||
}
|
||
|
||
return 1;
|
Auch abrufbar als: Unified diff
Controller::send_file schickt jetzt über client_js wenn ajax
(cherry picked from commit 0f16bc87b4804cf05cefb5ac1514c7f565cfbfbd)