Revision 4d6e7659
Von Moritz Bunkus vor mehr als 13 Jahren hinzugefügt
SL/Controller/Base.pm | ||
---|---|---|
5 | 5 |
use parent qw(Rose::Object); |
6 | 6 |
|
7 | 7 |
use Carp; |
8 |
use IO::File; |
|
8 | 9 |
use List::Util qw(first); |
9 | 10 |
|
10 | 11 |
# |
... | ... | |
83 | 84 |
return $output; |
84 | 85 |
} |
85 | 86 |
|
87 |
sub send_file { |
|
88 |
my ($self, $file_name, %params) = @_; |
|
89 |
|
|
90 |
my $file = IO::File->new($file_name, 'r') || croak("Cannot open file '${file_name}'"); |
|
91 |
my $content_type = $params{type} || 'application/octet_stream'; |
|
92 |
my $attachment_name = $params{name} || $file_name; |
|
93 |
$attachment_name =~ s:.*//::g; |
|
94 |
|
|
95 |
print $::form->create_http_response(content_type => $content_type, |
|
96 |
content_disposition => 'attachment; filename="' . $attachment_name . '"', |
|
97 |
content_length => -s $file); |
|
98 |
|
|
99 |
$::locale->with_raw_io(\*STDOUT, sub { print while <$file> }); |
|
100 |
$file->close; |
|
101 |
} |
|
102 |
|
|
86 | 103 |
# |
87 | 104 |
# Before/after run hooks |
88 | 105 |
# |
... | ... | |
368 | 385 |
$self->render('todo/single_item', { type => 'js' }, |
369 | 386 |
item => $employee->most_important_todo_item); |
370 | 387 |
|
388 |
=item C<send_file $file_name, [%params]> |
|
389 |
|
|
390 |
Sends the file C<$file_name> to the browser including appropriate HTTP |
|
391 |
headers for a download. C<%params> can include the following: |
|
392 |
|
|
393 |
=over 2 |
|
394 |
|
|
395 |
=item * C<type> -- the file's content type; defaults to |
|
396 |
'application/octet_stream' |
|
397 |
|
|
398 |
=item * C<name> -- the name presented to the browser; defaults to |
|
399 |
C<$file_name> |
|
400 |
|
|
401 |
=back |
|
402 |
|
|
371 | 403 |
=item C<url_for $url> |
372 | 404 |
|
373 | 405 |
=item C<url_for $params> |
Auch abrufbar als: Unified diff
Funktion "send_file" im Controller, um Dateien herunterzuladen