Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision be944d27

Von Sven Schöling vor mehr als 5 Jahren hinzugefügt

  • ID be944d27c902dc71bdf0246dc8cfe0137c4e43ea
  • Vorgänger 27467fa2
  • Nachfolger 348d92dd

Controller::send_file schickt jetzt über client_js wenn ajax

(cherry picked from commit 0f16bc87b4804cf05cefb5ac1514c7f565cfbfbd)

Unterschiede anzeigen:

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