Jan: Dateien in Datenbank hochladen

Hallo,

ich habe ein Script geschrieeben, um Dateien(Textdokumente wie von Word)in meine Datenbank hochzuladen, nun bekomme ich aber immer wieder den Hinweis das in dem Script die hochzuladende Datei nicht gefunden werden konnte oder ähnliches (no such file or directory)

fopen(): Unable to access WMOK.doc
 fopen(WMOK.doc): failed to open stream: No such file or directory
 filesize(): Stat failed for WMOK.doc (errno=2 - No such file or    directory) Wobei ich bei diesem Fehler denke das es sich um die zugelassene Dateigröße handelt, was aber nicht sein kann, da diese mit 1MB doch sehr hoch angegeben ist und das hochzuladende Dokument nur 40 kb wiegt

Ich hoffe jemand kann mir helfen oder hat Ratschläge

MFG

JAn

  1. Hello,

    Ich hoffe jemand kann mir helfen oder hat Ratschläge

    lass Dir bitte nach dem Hochladen anzeigen:

    echo "<pre>\n";
      print_r($_FILES);
      echo "</pre>\n";

    Und dann sag uns, was da angezeigt wird.

    Harzliche Grüße vom Berg
    http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau

    1. Hello,

      Ich hoffe jemand kann mir helfen oder hat Ratschläge

      lass Dir bitte nach dem Hochladen anzeigen:

      echo "<pre>\n";
        print_r($_FILES);
        echo "</pre>\n";

      Und dann sag uns, was da angezeigt wird.

      Array
      (
          [u_pic] => Array
              (
                  [name] => WMOK.doc
                  [type] => application/msword
                  [tmp_name] => /srv/www/htdocs/web429/phptmp/phpRwFIPj
                  [error] => 0
                  [size] => 116736
              )

      Das ist es wohl.

      JAn

      1. Hello Jan,

        Und dann sag uns, was da angezeigt wird.

        Array
        (
            [u_pic] => Array
                (
                    [name] => WMOK.doc
                    [type] => application/msword
                    [tmp_name] => /srv/www/htdocs/web429/phptmp/phpRwFIPj
                    [error] => 0
                    [size] => 116736
                )

        Dann solltest Du innerhalb des Scripts nun über $_FILES['u_pic']['tmp_name'] als Dateinamen auf die temporäre Datei zugreifen können, um sie in einen persistenten Modus zu kopieren.

        Wenn das nicht geht, gibt es unterschiedliche Fehlerquellen. Dann benötigen wir sämtliche Fehlermeldungen, die möglich sind.

        error_reporting(E_ALL);

        am Anfang Deines Scriptes könnte da schon helfen.

        Wichtig ist immer die Abfrage von ['error'] aus den $_FILES, bevor man irgendwas macht mit dem hochgeladenen File. Das _muss_ 0 sein!

        Harzliche Grüße vom Berg
        http://www.annerschbarrich.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau

        1. Hallo Tom,

          Dann solltest Du innerhalb des Scripts nun über $_FILES['u_pic']['tmp_name'] als Dateinamen auf die temporäre Datei zugreifen können, um sie in einen persistenten Modus zu kopieren.

          Bitte nich soviel Fachjargon bin noch ziemlich frisch ;)
          Vielleicht al eine kurze Erläuterung?

          Wenn das nicht geht, gibt es unterschiedliche Fehlerquellen. Dann benötigen wir sämtliche Fehlermeldungen, die möglich sind.

          error_reporting(E_ALL);

          sagt mir "2039" was immer das auch heißen mag. Ich weiß es leider nicht.

          Wichtig ist immer die Abfrage von ['error'] aus den $_FILES, bevor man irgendwas macht mit dem hochgeladenen File. Das _muss_ 0 sein!

          Es ist ja null, wie wir gerade gesehen haben.

          JAn

          1. Hello Jan,

            Vielleicht al eine kurze Erläuterung?

            Wenn die Datei hochgeladen wurde, wird sie nur temporär im Speicher (oder auf Platte) gehalten. Wenn das Script endet, verschwindet auch die Datei wieder.

            Man muss sie erst kopieren in eine dauerbestädige Datei.
            Das klappt aber leider wegen falscher Konfiguration der Webserver manchmal nicht.

            error_reporting(E_ALL);

            sagt mir "2039" was immer das auch heißen mag. Ich weiß es leider nicht.

            Das war der alte Wert. Der neue, nachdem Du die Funktion wie beschrieben aufgerufen hast, ist dann 2047. Das sorgt dafür, dass auch sogenannte Notices angezeigt werden.

            Harzliche Grüße vom Berg
            http://www.annerschbarrich.de

            Tom

            --
            Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
            Nur selber lernen macht schlau

            1. Hello Jan,

              auf jedan Fall lesenswert:

              http://de3.php.net/features.file-upload

              Dann solltest Du es eigentlich hinkriegen, wenn nicht der Webserver schlecht konfiguriert ist.

              Harzliche Grüße vom Berg
              http://www.annerschbarrich.de

              Tom

              --
              Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
              Nur selber lernen macht schlau