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 ?

Leser: 1


<< |< 1 2 3 >| >> 30 Einträge, 3 Seiten
BrownWolf
 2003-08-25 00:26
#79409 #79409
User since
2003-08-15
308 Artikel
BenutzerIn
[default_avatar]
Hallo,

ich hätte da mal ne kleine Frage.
Wie lädt man eigentlich per Formular ein Bild mit Perl hoch ?
Da klickt man auf einen Button: "Datei suchen" und durchsucht die Platte dann nach einem File. Das lädt Perl dann auf den Server.
Sowas hab ich noch nicht gelernt und das brauche ich grad :-)

BrownWolf
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;
SirLant
 2003-08-25 00:33
#79410 #79410
User since
2003-08-04
516 Artikel
BenutzerIn
[default_avatar]
In der Faq gibts dazu nen Abschnitt, wo das erklärt wird.
hier klicken

Edit pq: link auf faq geändert\n\n

<!--EDIT|pq|1065022041-->
--Programming today is a race between Software Enginers striving to build bigger and better idiot-proof Programs,
and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning!
jan10001
 2003-08-25 00:35
#79411 #79411
User since
2003-08-14
962 Artikel
BenutzerIn
[default_avatar]
BrownWolf
 2003-08-25 00:44
#79412 #79412
User since
2003-08-15
308 Artikel
BenutzerIn
[default_avatar]
Danke für die schnellen Antworten. Werd mir beides anschauen.
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;
[E|B]
 2003-08-25 01:11
#79413 #79413
User since
2003-08-08
2561 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Oder schau dir einfach den Code von meinem Uploadscript an:
CGI-World.de > Eriks Upload Script
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-25 01:18
#79414 #79414
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
[E|B
,24.08.2003, 23:11]Oder schau dir einfach den Code von meinem Uploadscript an:
CGI-World.de > Eriks Upload Script

hab es mir mal gerade angeschaut...
bist nicht gerade ein freund von effizienter programmierung...
auch könntest du mehr funktionen benutzten!
BrownWolf
 2003-08-25 01:23
#79415 #79415
User since
2003-08-15
308 Artikel
BenutzerIn
[default_avatar]
So ähh ja,

hab da nichts gefunden in deinem Script.

Ich hab das bis jetzt so gemacht:

Code: (dl )
1
2
3
4
  <tr>
<td width="44%"><small>$language{field61}:</small></td>
<td width="56%"><small><input type="file" name="upload" size=28 maxlength=80></small></td>
</tr>



Code (perl): (dl )
1
2
3
4
5
6
7
8
open(DAT,">$ENV{DOCUMENT_ROOT}/images/$read[0].gif") || die $!;
binmode DAT;
binmode $form{upload};
my $data;
while(read $form{upload}, $data, 1024) {
print DAT $data;
}
close(DAT);


Das $read[0] steht für den Nicknamen der gerade eingeloggt ist :)
Blos der erstellt jetzt andauernt ne leere .gif Datei !
Hab ich was vergessen ?
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;
[E|B]
 2003-08-25 01:26
#79416 #79416
User since
2003-08-08
2561 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Ich lebe gerne "Modulfrei". Wenn ein User das Script herunterlädt und installiert, soll er so wenig Probleme wie möglich mit dem Script haben. Ob das effizient ist oder nicht ist in diesem Falle egal, da die Benutzerfreundlichkeit in diesem Sinne vorgeht. Wäre es ein privates Script, das nur ich benutze, würde ich andere Methoden anwenden. Ich muss mich halt so gut wie es geht den Benutzern anpassen, nicht diese mir!
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-25 01:38
#79417 #79417
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
okay...
aber warum
- lagerst du die daten zum GET und POST Daten parsen nicht in ein eigenes Modul aus... musst es ja nicht in eine eigene datei schreiben, sondern z.B. ans Ende des Scripts bsp:
pcakage MyCGI;
# blbla
1;

- wieso benutzt du keine strict und noch schlimmer, wieso benutzt du kein my ?

- funktionen die so heißen wie perl-build-in funktionen sind kein guter Stil... hiermit meine ich index und delete

- folgender Ausschnitt (Zeile 400 - 416):
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
if($checksuffix eq "0") {
    open(F, "data/suffixfiles.txt") || die "Cant't open data: 'data/suffixfiles.txt'!\n$!";
    flock(F,2) if($flock);
    @suffix = <F>;
    flock(F,8) if($flock);
    close(F);

    foreach $i (@suffix){
        chomp($i);
        $i =~ s/[\n\r]//g;
        if($FILE{'uploaddata01'} =~ m/\.$i$/i){
            $x = "1";
        }
    }

    &index("Datei besitzt ung&uuml;ltige Endung!") if($x ne "1");
}


hätte ich so geschrieben

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
if($checksuffix eq "0") {
    open(F, "data/suffixfiles.txt") || die "Cant't open data: 'data/suffixfiles.txt'!\n$!";
    flock(F,2) if($flock);
    while(<F>) {
        chomp;
        s/[\n\r]//g;
        if($FILE{'uploaddata01'} =~ m/\.$_$/i){
            $x = "1";
        }
    }
    # flock(F,8) if($flock); //unflock ist nicht nötig
    close(F);

    &index("Datei besitzt ung&uuml;ltige Endung!") if($x ne "1");
}


- usw. usf.
[E|B]
 2003-08-25 01:45
#79418 #79418
User since
2003-08-08
2561 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Wo ist der große Unterschied, außer das du eine while Schleife während dem Öffnen verwendest?
Das ich strict nicht verwende, ist eigene Dummheit! ;o)
Das mit dem Auslagern ist im Prinzip eine gute Idee. Ich schreibe jedoch die Funktionen zum Parsen immer direkt an den Anfang der Hauptdatei. Frag mich nicht warum, als ich damit angefangen habe, hat mir niemand gesagt, wie ich es hätte besser machen können.\n\n

<!--EDIT|[E|B]|1061761576-->
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]
<< |< 1 2 3 >| >> 30 Einträge, 3 Seiten



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