Schrift
[thread]2[/thread]

Uploadprobleme: Problem beim Upload einer ZIP Datei

Leser: 1


<< >> 5 Einträge, 1 Seite
[E|B]
 2003-08-08 17:51
#1416 #1416
User since
2003-08-08
2561 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Hi!
Mit folgendem Code soll ein CGI Script eine ZIP Datei an den Browser schicken:

Code: (dl )
1
2
3
4
5
6
7
8
9
open(F, "files/data.zip");
binmode(F);
print "Content-Type: application/octet-stream;\n";
print "Content-Disposition: filename=data.zip;\n\n";
foreach $i (<F>){
$i =~ s/[\n\r]{2}/\n/g;
print $i;
}
close(F);


Wenn ich die Datei so an den Browser sende und speichere und dann öffnen will, bekomme ich von WinZip eine Fehlermeldung. Lade ich die Datei direkt mit einem FTP Programm, kann man sie öffnen. Was ist an dem Code, der die ZIP Datei an den Browser ausgibt falsch?\n\n

<!--EDIT|[E|B]|1060350734-->
Gruß, Erik!

s))91\&\/\^z->sub{}\(\@new\)=>69\&\/\^z->sub{}\(\@new\)=>124\&\/\^z->sub{}\(\@new\)=>);
$_.=qq~66\&\/\^z->sub{}\(\@new\)=>93~;for(@_=split(/\&\/\^z->sub{}\(\@new\)=>/)){print chr;}

It's not a bug, it's a feature! - [CGI-World.de]
pq
 2003-08-08 17:59
#1417 #1417
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
also
1. wenn schon binmode (F), dann auch an
STDOUT denken.
2. warum veränderst du die zip-datei?
warum meinst du, dass das rauswerfen
von \r|\n aus einer zip-datei etwas sinnvolles tut?
3. warum nicht mit read(); das ist eigentlich
bei binärdaten das perligste.\n\n

<!--EDIT|pq|1060351200-->
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
[E|B]
 2003-08-08 18:03
#1418 #1418
User since
2003-08-08
2561 Artikel
HausmeisterIn
[Homepage] [default_avatar]
\r und \n schmeiß ich nur raus, weil das bei .txt Dateien falsch ist. Als ich eine Textdatei hochgeladen habe und sie dann ausgegeben habe, sah das ganze im Browser so aus:

Code: (dl )
1
2
3
4
5
6
7
Dies

ist

ein

Test


Statt:

Code: (dl )
1
2
3
4
Dies
ist
ein
Test


Deshalb mache aus zwei \n's eines!
Gruß, Erik!

s))91\&\/\^z->sub{}\(\@new\)=>69\&\/\^z->sub{}\(\@new\)=>124\&\/\^z->sub{}\(\@new\)=>);
$_.=qq~66\&\/\^z->sub{}\(\@new\)=>93~;for(@_=split(/\&\/\^z->sub{}\(\@new\)=>/)){print chr;}

It's not a bug, it's a feature! - [CGI-World.de]
esskar
 2003-08-08 18:38
#1419 #1419
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
use strict;

binmode STDOUT;
open F, "< files/data.zip";
binmode F;
print "Content-Type: application/octet-stream\n";
print "Content-Disposition: filename=data.zip\n\n";

my ($len, $off, $data) = (0, 0, undef);
while(len = read(F, $data, 1024, $off))
{
print STDOUT $data;
$off += $len;
}
close F;
[E|B]
 2003-08-08 19:13
#1420 #1420
User since
2003-08-08
2561 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Super, danke euch allen!
Gruß, Erik!

s))91\&\/\^z->sub{}\(\@new\)=>69\&\/\^z->sub{}\(\@new\)=>124\&\/\^z->sub{}\(\@new\)=>);
$_.=qq~66\&\/\^z->sub{}\(\@new\)=>93~;for(@_=split(/\&\/\^z->sub{}\(\@new\)=>/)){print chr;}

It's not a bug, it's a feature! - [CGI-World.de]
<< >> 5 Einträge, 1 Seite



View all threads created 2003-08-08 17:51.