Thread FTP Download (47 answers)
Opened by volker.55211 at 2019-03-18 16:20

Linuxer
 2019-03-20 23:27
#189926 #189926
User since
2006-01-27
3870 Artikel
HausmeisterIn

user image
Wenn das CGI-Skript die Datei selber erstellt und es nur eine Datei ist, dann liefere sie doch gleich über das CGI-Skript selber aus.

[edit]

Hier ein einfaches und getestetes Beispiel dazu:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#! /usr/bin/env perl
use strict;
use warnings;

use CGI;
use File::Basename qw( basename );


my $generated_file = "/tmp/x.png";

# here happens the magic and $generated_file is generated

my $cgi = CGI->new();

print $cgi->header(
    '-type'       => 'image/png',
    '-attachment' => basename($generated_file),
);


open my $fh, '<', $generated_file or die "open($generated_file) failed: $!";
binmode($fh);               # for binary data
{
    local $/ = \1024;       # deliver in 1 kiB chunks
    print $_ for <$fh>;     # deliver data
}
close $fh;


Wenn Du sogar Perl-Code hast, der die Daten in ein Filehandle schreiben würde, könntest Du den Umweg über die Datei sparen und direkt die Daten ausgeben:

ungetestetes Beispiel:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#! /usr/bin/env perl
use strict;
use warnings;

use CGI;

my $fake_filename = "x.png";

my $cgi = CGI->new();
print $cgi->header(
    '-type'       => 'image/png',
    '-attachment' => $fake_filename,
);

# let's assume, generate_png() generates a valid PNG data stream
print generate_png();

Last edited: 2019-03-20 23:55:02 +0100 (CET)
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!

View full thread FTP Download