Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]5653[/thread]

Bild uploaden: Wie lade ich ein Bild mit Perl hoch ? (Seite 3)

Leser: 1


<< |< 1 2 3 >| >> 30 Einträge, 3 Seiten
pq
 2003-08-25 03:59
#79429 #79429
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=esskar,24.08.2003, 23:38]
hätte ich so geschrieben

# rote schrift von pq

if($checksuffix eq "0") {
    open(F, "data/suffixfiles.txt") || die "Cant't open data: 'data/suffixfiles.txt'!
$!";
    flock(F,2) if($flock);
   # lieber konstanten (LOCK_EX) verwenden. code ist für menschen
   # und soll lesbar sein

    while(<F>) {
        chomp; # unnötig, nimm y///
        s/[ \r]//g;# y/// ist schneller
        if($FILE{'uploaddata01'} =~ m/\.$_$/i){
            $x = "1";
           # hier kann man schon die schleife beenden
        }
    }
    # flock(F,8) if($flock); //unflock ist nicht nötig
   # kann sogar schädlich sein
    close(F);

    &index("Datei besitzt ungültige Endung!") if($x ne "1");
   # wofür das '&'? (wie du schon gesagt hast, lieber
   # eigene funktionsnamen verwenden

}


- usw. usf.[/quote]
und ich:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
    use Fcntl qw(:flock); # ist bei jeder perl-version dabei!
    my $x;
    open F, "data/suffixfiles.txt" or die "Cant't open data: 'data/suffixfiles.txt'!
$!";
    flock F, LOCK_EX if $flock ;
    while(<F>) {
        y/ \r\n//d;
        $x = 1, last if($FILE{'uploaddata01'} =~ m/\.$_$/i);
    }
    close F ;

    myindex("Datei besitzt ungültige Endung!")  unless $x;
}
\n\n

<!--EDIT|pq|1061770063-->
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-25 14:20
#79430 #79430
User since
2003-08-08
2561 Artikel
HausmeisterIn
[Homepage] [default_avatar]
@pq

Auch danke für deinen Tipp! :D
Das y/// kenn ich gar nicht...
Was spricht dagegen statt LOCK_EX flock(F,2) zu nehmen?
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]
BrownWolf
 2003-08-25 15:06
#79431 #79431
User since
2003-08-15
308 Artikel
BenutzerIn
[default_avatar]
TMTOWTDI :P
Code (perl): ()
1
2
3
sub _{s;;xrqIpiql\\{}p{pl{R>rl{N{}gjwpkssq]>rl{N;;;*{{}=*{_};;
&#36{{}={q{{{}}}=>[reverse+split+reverse+q;}{;]};&#36{{}->{q{{{}}}}->[@{{}];}
&#36{{}=reverse+_(q{{}}=>q{{}})^chr(30)x+length&_(q{{}}=>,q{{}})and+print;
BrownWolf
 2003-08-25 15:10
#79432 #79432
User since
2003-08-15
308 Artikel
BenutzerIn
[default_avatar]
Achso hatte noch was zu dem uploaden zu sagen. Also das von strat funktioniert auch super.
Aber:
Ich habe gestern ausversehen eine Datei uploaden wollen die > 100 KB hat. Und ich glaub das CGI::POST_MAX hat eingegriffen.

Jetzt legt Perl, egal in welchem Verzeichnis nur noch ne leere BrownWolf Datei an bzw. laut FTP existiert diese Datei gar nicht. Man kann sie weder umbennen , noch löschen.

Was ist da jetzt los ???
Code (perl): ()
1
2
3
sub _{s;;xrqIpiql\\{}p{pl{R>rl{N{}gjwpkssq]>rl{N;;;*{{}=*{_};;
&#36{{}={q{{{}}}=>[reverse+split+reverse+q;}{;]};&#36{{}->{q{{{}}}}->[@{{}];}
&#36{{}=reverse+_(q{{}}=>q{{}})^chr(30)x+length&_(q{{}}=>,q{{}})and+print;
Crian
 2003-08-25 15:28
#79433 #79433
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
[E|B
,25.08.2003, 12:20]Was spricht dagegen statt LOCK_EX flock(F,2) zu nehmen?

[quote=pq,25.08.2003, 01:59]    # lieber konstanten (LOCK_EX) verwenden. code ist für menschen
   # und soll lesbar sein
[/quote]
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
BrownWolf
 2003-08-25 15:34
#79434 #79434
User since
2003-08-15
308 Artikel
BenutzerIn
[default_avatar]
Dann dürfte man auch nicht mehr:

Code (perl): (dl )
1
2
3
while(<BLA>) {
print $_;
}


schreiben, sondern weil der Mensch es ja lesen muss:

Code (perl): (dl )
1
2
3
while($read = <BLA>) {
print $read;
}


Aber da kann man sich jetzt Stunden drüber streiten.
Das ist es doch nicht wert oder ?
Kümmert euch lieber mal um andre die Probleme im Board haben und um meins *GGRRR*
Code (perl): ()
1
2
3
sub _{s;;xrqIpiql\\{}p{pl{R>rl{N{}gjwpkssq]>rl{N;;;*{{}=*{_};;
&#36{{}={q{{{}}}=>[reverse+split+reverse+q;}{;]};&#36{{}->{q{{{}}}}->[@{{}];}
&#36{{}=reverse+_(q{{}}=>q{{}})^chr(30)x+length&_(q{{}}=>,q{{}})and+print;
BrownWolf
 2003-08-25 17:26
#79435 #79435
User since
2003-08-15
308 Artikel
BenutzerIn
[default_avatar]
So hab ichs auch nicht gemeint =/

Edit: Hallo ? Hab ich was falsches geschrieben ?
Wenn ja, dann tut es mir leid.

Mein Code sieht jetzt so aus:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
if($form{upload} ne "") {
my $filehandle = $cgi->param('upload');
my $size = -s $filehandle;
$size /= 1024;
if($size < 80) {
open(DAT,">$ENV{DOCUMENT_ROOT}/$config{pfad}/images/$read[0].gif") || die $!;
binmode(DAT);
binmode $filehandle;
local $/ = undef;
my $data;
while(<$filehandle>) {
print DAT $data;
}
close(DAT);
print "$language{field73}<br>"; # Bild upgeloadet
} else {
print "$language{field72}<br>"; # Error: Bild zu groß
}


Gehts so auch ? :)
Nochmal Edit: LOL da hab ich mir selbst ins Bein geschossen.
Es muss heissen:

Code (perl): (dl )
1
2
3
while($data = <$filehandle>) {
print DAT $data;
}


Aber nun wird trotzdem ne Datei angelegt, zwar mit dem Inhalt des Bildes, aber keine .gif ?\n\n

<!--EDIT|BrownWolf|1061825084-->
Code (perl): ()
1
2
3
sub _{s;;xrqIpiql\\{}p{pl{R>rl{N{}gjwpkssq]>rl{N;;;*{{}=*{_};;
&#36{{}={q{{{}}}=>[reverse+split+reverse+q;}{;]};&#36{{}->{q{{{}}}}->[@{{}];}
&#36{{}=reverse+_(q{{}}=>q{{}})^chr(30)x+length&_(q{{}}=>,q{{}})and+print;
BrownWolf
 2003-08-25 20:35
#79436 #79436
User since
2003-08-15
308 Artikel
BenutzerIn
[default_avatar]
Ok ... jetzt hab ichs !
In den Nicknamen war irgendein komisches Zeichen hinten dran (obwohl ich gechompt habe).
Nun sind die Nicks in HEX umgewandelt.

Er erstellt jetzt auch .gif Dateien !
Kann man eigentlich in Perl schreiben:

Code (perl): (dl )
chomp @read[0..$#read];


Oder iss daran was falsch ? Versteht das Perl ?
Code (perl): ()
1
2
3
sub _{s;;xrqIpiql\\{}p{pl{R>rl{N{}gjwpkssq]>rl{N;;;*{{}=*{_};;
&#36{{}={q{{{}}}=>[reverse+split+reverse+q;}{;]};&#36{{}->{q{{{}}}}->[@{{}];}
&#36{{}=reverse+_(q{{}}=>q{{}})^chr(30)x+length&_(q{{}}=>,q{{}})and+print;
pq
 2003-08-25 20:49
#79437 #79437
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=BrownWolf,25.08.2003, 18:35]Kann man eigentlich in Perl schreiben:

Code (perl): (dl )
chomp @read[0..$#read];
[/quote]
ja. aber findest du es nicht einfacher, chomp @read;
zu schreiben?
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
Strat
 2003-08-25 21:38
#79438 #79438
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=BrownWolf,25.08.2003, 01:54]Was ich daran nicht verstehe:
Woher hast du das $fh ?[/quote]
Es kommt von der Zeile
Code (perl): (dl )
my $filehandle = $query->upload('uploaded_file');

die dann eigentlich

Code (perl): (dl )
my $fh = $query->upload('uploaded_file');

lauten sollte (und alle $filehandle's durch $fh's ersetzen). Danke fuer den Hinweis, ich habe den Bug behoben\n\n

<!--EDIT|Strat|1061833318-->
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
<< |< 1 2 3 >| >> 30 Einträge, 3 Seiten



View all threads created 2003-08-25 00:26.