Thread Header für Dateidownload (22 answers)
Opened by bianca at 2009-11-23 14:44

Linuxer
 2009-11-23 22:04
#128512 #128512
User since
2006-01-27
3881 Artikel
HausmeisterIn

user image
Hi,

prinzipiell schaut mir der Header ordentlich aus.
Habe mal hier auf meinem Linux/Apache getestet (daher kann ich es nicht mit IE testen) und es schaut gut aus.
Getestet habe ich mit Firefox und Opera. Kann daher für den IE keine Aussage treffen oder einen passenden Workaround präsentieren.

edit: Konnte es nun im Büro mal mit einem IE6 (Vorgabe, Version kann ich nicht beeinflussen) ausprobieren. Die Größe wird korrekt berücksichtigt und dargestellt. //edit

Anstatt den Header selber zusammenzubauen, würde ich CPAN:CGIs header() Funktion/Methode benutzen.
So auch in meinem Testskript geschehen. So spart man sich auch den Murks, die "richtigen" Zeilenumbrüche zu erwischen ;)

Erste Tests wurden mit dem eigenen Header gemacht, die weiteren Tests mit der Methode CGI->header().
Immer war es so, dass wenn die Zeile mit "Content-Length" fehlte, der Browser entsprechend eine unbekannte Größe und Dauer anzeigte.

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
28
29
30
31
32
33
34
#!/usr/bin/perl
use strict;
use warnings;
use CGI qw();

# Testdaten
my $content = '0123456789abcdef' x ( 64 * 1024 );

my $cgi = CGI->new();

print $cgi->header(
    -type           => 'application/octet-stream',
    -attachment     => 'save.dat',
#    -Content_length => length $content,
);

### Altlasten
#my $length  = length $content;
#print <<OUTPUT;
#Content-Type: application/octet-stream
#Content-Length: $length
#Content-Disposition: attachment; filename="save.dat"
#
#OUTPUT

my $pos        = 0;
my $partlength = 10_240;

# langsamen Download simulieren; (wg. Test mit localhost)
while ( my $part = substr( $content, $pos, $partlength )  ) {
    print $part;
    $pos+=$partlength;
    sleep 1;
}

Last edited: 2009-11-24 14:14:28 +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 Header für Dateidownload