qwartz: Bild Upload über CGI

Hallo zusammen,
ich habe ein kleines Problem mit einem Bildupload!

$dir ="$ENV{DOCUMENT_ROOT}/images/shop/";

sub upload {

open(OUTFILE, ">>$dir$file")|| print"Can't open $dir$file. $!";
while ($bytesread=read($filename,$buffer,1024))
{print OUTFILE $buffer; }
close (OUTFILE);
return;}

die Fehlermeldung .... :(

Software error:
CGI open of tmpfile: No such file or directory

ich habe die Uploads per PHP getestet und hatte keine Probleme mit tmp!

es muss wohl an einer Pfadangabe liegen wäre super wenn einer mir da weiterhelfen könnte! (Mein erstes CGI war bisher mit php ganz zufrieden aber der Kunde wünscht so ....)
ty & cya
Q

  1. Hallo zusammen,
    ich habe ein kleines Problem mit einem Bildupload!

    ich will dir ja nuicht zu nahe treten, aber du hast schon an sich ein Problem mit deinem Perl skript.

    Du solltest auf jeden Fall diesen Tipp beherzigen: http://www.worldmusic.de/perl/mini-faq.html#03

    und für dein Anligen bietet sich CGI.pm an.

    $dir ="$ENV{DOCUMENT_ROOT}/images/shop/";

    bist du sicher, dass es das Verzeichniss gibt?
    Ich würde es testen.

    sub upload {

    open(OUTFILE, ">>$dir$file")|| print"Can't open $dir$file. $!";
    while ($bytesread=read($filename,$buffer,1024))

    was ist $filename? Wenn es wirklich nur der Name ist funktioniert das so nicht.

    {print OUTFILE $buffer; }
    close (OUTFILE);
    return;}

    die Fehlermeldung .... :(

    Software error:
    CGI open of tmpfile: No such file or directory

    Wo kommt den diese Fehlermeldung her?
    Auf jeden Fall nicht von deinem Codeschnipsel.

    Struppi.

    1. Hallo zusammen,
      ich habe ein kleines Problem mit einem Bildupload!

      ich will dir ja nuicht zu nahe treten, aber du hast schon an sich ein Problem mit deinem Perl skript.

      (AUF keinen Fall wie gesagt is mein erstes cgi )

      Du solltest auf jeden Fall diesen Tipp beherzigen: http://www.worldmusic.de/perl/mini-faq.html#03

      damit konnte ich nicht viel anfangen

      und für dein Anligen bietet sich CGI.pm an.

      $dir ="$ENV{DOCUMENT_ROOT}/images/shop/";

      bist du sicher, dass es das Verzeichniss gibt?
      Ich würde es testen. GETAN! Verzeichniss besteht.

      sub upload {

      open(OUTFILE, ">>$dir$file")|| print"Can't open $dir$file. $!";
      while ($bytesread=read($filename,$buffer,1024))

      was ist $filename? Wenn es wirklich nur der Name ist funktioniert das so nicht.

      my $bild = param("bild");
      $filename=$bild

      {print OUTFILE $buffer; }
      close (OUTFILE);
      return;}

      die Fehlermeldung .... :(

      Software error:
      CGI open of tmpfile: No such file or directory

      Wo kommt den diese Fehlermeldung her?
      Auf jeden Fall nicht von deinem Codeschnipsel.

      Muss fast denn wenn ich einen eintrag ohne Bild mache geht alles super klar! chmods sind eigentlich auch alle richtig gesetzt...

      Struppi.

      1. Hallo zusammen,
        ich habe ein kleines Problem mit einem Bildupload!

        ich will dir ja nuicht zu nahe treten, aber du hast schon an sich ein Problem mit deinem Perl skript.
        (AUF keinen Fall wie gesagt is mein erstes cgi )

        Du solltest auf jeden Fall diesen Tipp beherzigen: http://www.worldmusic.de/perl/mini-faq.html#03
        damit konnte ich nicht viel anfangen

        durch use strict und dass einschalten der Warnungen lassen sich Flüchtigkeitsfehler vermeiden.

        Für CGI Programe bietet sich ausserdem noch

        use CGI::Carp qw /fatalsToBrowswer/;

        an. Dann siehst du die Fehlermeldungen im Browser.

        und für dein Anligen bietet sich CGI.pm an.

        $dir ="$ENV{DOCUMENT_ROOT}/images/shop/";

        bist du sicher, dass es das Verzeichniss gibt?
        Ich würde es testen. GETAN! Verzeichniss besteht.

        Ich meinte im Skript

        die "Verzeichniss existiert nicht" unless -d $dir;

        sub upload {

        open(OUTFILE, ">>$dir$file")|| print"Can't open $dir$file. $!";
        while ($bytesread=read($filename,$buffer,1024))

        was ist $filename? Wenn es wirklich nur der Name ist funktioniert das so nicht.
        my $bild = param("bild");
        $filename=$bild

        Was ist param('bild')?
        Ein Textfeld oder uploadfeld?

        {print OUTFILE $buffer; }
        close (OUTFILE);
        return;}

        die Fehlermeldung .... :(

        Software error:
        CGI open of tmpfile: No such file or directory

        Wo kommt den diese Fehlermeldung her?
        Auf jeden Fall nicht von deinem Codeschnipsel.
        Muss fast denn wenn ich einen eintrag ohne Bild mache geht alles super klar! chmods sind eigentlich auch alle richtig gesetzt...

        In deinem Codeschnipsel ist nirgens die Meldung  'CGI open tmpfile' eingebaut. Insofern kommt die Meldung nicht davon.

        Schau die mal die Dokumentation von CGI.pm an (ist bei der Perl Version dabei), da steht drin wie du eine Datei hochlädst.

        Struppi.

        1. Hallo zusammen,
          ich habe ein kleines Problem mit einem Bildupload!

          ich will dir ja nuicht zu nahe treten, aber du hast schon an sich ein Problem mit deinem Perl skript.
          (AUF keinen Fall wie gesagt is mein erstes cgi )

          Du solltest auf jeden Fall diesen Tipp beherzigen: http://www.worldmusic.de/perl/mini-faq.html#03
          damit konnte ich nicht viel anfangen

          durch use strict und dass einschalten der Warnungen lassen sich Flüchtigkeitsfehler vermeiden.

          Also use strict führte zu bla.cgi too many errors

          Für CGI Programe bietet sich ausserdem noch

          use CGI::Carp qw /fatalsToBrowswer/;

          ist schon drin daher CGI open of tmpfile: No such file or directory

          an. Dann siehst du die Fehlermeldungen im Browser.

          und für dein Anligen bietet sich CGI.pm an.

          $dir ="$ENV{DOCUMENT_ROOT}/images/shop/";

          bist du sicher, dass es das Verzeichniss gibt?
          Ich würde es testen. GETAN! Verzeichniss besteht.

          Ich meinte im Skript

          die "Verzeichniss existiert nicht" unless -d $dir;

          auch gecheckt > ok

          sub upload {

          open(OUTFILE, ">>$dir$file")|| print"Can't open $dir$file. $!";
          while ($bytesread=read($filename,$buffer,1024))

          was ist $filename? Wenn es wirklich nur der Name ist funktioniert das so nicht.

          Was ist param('bild')?
          Ein Textfeld oder uploadfeld?

          <input type=file name=bild size=30>

          my $bild = param("bild");
          $filename=$bild

          {print OUTFILE $buffer; }
          close (OUTFILE);
          return;}

          die Fehlermeldung .... :(

          Software error:
          CGI open of tmpfile: No such file or directory

          Wo kommt den diese Fehlermeldung her?
          Auf jeden Fall nicht von deinem Codeschnipsel.
          Muss fast denn wenn ich einen eintrag ohne Bild mache geht alles super klar! chmods sind eigentlich auch alle richtig gesetzt...

          In deinem Codeschnipsel ist nirgens die Meldung  'CGI open tmpfile' eingebaut. Insofern kommt die Meldung nicht davon.

          Da ich zuwenig Ahnung davon hab wiedersprech ich mal nicht aber bedeutet nicht OUTFILE das gleiche wie tmpfile ?

          Schau die mal die Dokumentation von CGI.pm an (ist bei der Perl Version dabei), da steht drin wie du eine Datei hochlädst.

          gemacht also im eigentlichen Upload ist (Syntax) kein Fehler ich vermute das Problem langsam auf dem Server ;( !
          Auf jeden fall mal vielen Dank für deine Tipps!

          Struppi.

          1. durch use strict und dass einschalten der Warnungen lassen sich Flüchtigkeitsfehler vermeiden.
            Also use strict führte zu bla.cgi too many errors

            Du musst die verwendeten Variabeln mit my deklarieren, dass erscheint zwar am Anfang lästig, verhindert aber später wie gesagt Flüchigkeitsfehler.

            open(OUTFILE, ">>$dir$file")|| print"Can't open $dir$file. $!";
            while ($bytesread=read($filename,$buffer,1024))

            was ist $filename? Wenn es wirklich nur der Name ist funktioniert das so nicht.

            Was ist param('bild')?
            Ein Textfeld oder uploadfeld?

            <input type=file name=bild size=30>

            Ein uploadfeld, und daher kann das obige nicht funktionieren. Un zwar....

            Schau die mal die Dokumentation von CGI.pm an (ist bei der Perl Version dabei), da steht drin wie du eine Datei hochlädst.
            gemacht also im eigentlichen Upload ist (Syntax) kein Fehler ich vermute das Problem langsam auf dem Server ;( !

            glaub ich das nicht, den ('ich kopier jetzt mal den Abschnitt aus meiner Doku die ich zu CGI.pm hab (da gibt es mehrere Abschnitte und Beispiele):

            $filename = $query->param('uploaded_file');

            Different browsers will return slightly different things for the name. Some browsers return the filename only. Others return the full path to the file, using the path conventions of the user's machine. Regardless, the name returned is always the name of the file on the user's machine, and is unrelated to the name of the temporary file that CGI.pm creates during upload spooling (see below).

            The filename returned is also a file handle. You can read the contents of the file using standard Perl file reading calls:

            # Read a text file and print it out

            while (<$filename>) {

            print;

            }

            # Copy a binary file to somewhere safe

            open (OUTFILE,">>/usr/local/web/users/feedback");

            while ($bytesread=read($filename,$buffer,1024)) {

            print OUTFILE $buffer;

            }

            Das ist anders als bei dir.

            Struppi.

            1. Also ich bin bald soweit das ganze nochmal neu in php zu Schreiben.
              ich hau jetzt hier mal den entsprechenden Abschnitt rein.Hab den Upload soweit geändert... aber immernoch die selbe Fehlermeldung ;(

              if ($bild eq ""){$bild=$bildvalue}
              else {$filename=$bild;
              @pfad = split (/\/,$bild);
              foreach $l (@pfad) {
              if ($l =~ /(.*)jpg/g | $l =~ /(.*)jpeg/g | $l =~ /(.*)gif/g | $l =~ /(.*)bmp/g){$file=$l;}
              }
               $bild=$file;&upload;}

              if ($link eq ""){$link=$linkvalue}
              else {$filename=$link;
              @pfad = split (/\/,$link);
              foreach $l (@pfad) {
              if ($l =~ /(.*)jpg/g | $l =~ /(.*)jpeg/g | $l =~ /(.*)gif/g | $l =~ /(.*)bmp/g){$file=$l;}
              }
               $link=$file;&upload;}

              sub upload {
              $filename = $query->param('uploaded_file');
              open(OUTFILE,">>$dir")|| print"Can't open $dir. $!";
              while ($bytesread=read($filename,$buffer,1024))
              {print OUTFILE $buffer; }
              close (OUTFILE);
              return;}

              hoffe man kann damit was anfangen jetzt hab ich ja eh bald das ganze Script gepostet :)
              ty Q

              1. Also ich bin bald soweit das ganze nochmal neu in php zu Schreiben.

                Mach doch!

                Du hast kein Stück von dem, was ich dir bis jetzt versucht hab näher zu bringen, berücksichtigt. Ich fang doch nicht noch mal von vorne an :-(

                Struppi.