blob von html-datei aus öffnen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • blob von html-datei aus öffnen

    Hallo Leute!

    Ich steh vor folgendem Problem, an dem ich schon fast verzweifle:

    Über ein Formular werden die eingegebenen Daten in einer Tabelle einer DB abgespeichert. Es besteht auch die Möglichkeit, Dateien anzuhängen (es soll sich nur um Bilddateien handeln, also JPG und BMP, evtl. PNG)!
    Diese Bilddateien werden in der Datenbank in einem Feld vom Typ blob gespeichert.

    Nun werden über verschiedene Abfragen die Datensätze wieder ausgegeben. Das funktioniert soweit auch, nur mit dem blob-feld hab ich so meine Probleme! Ich bekomm immer nur den Namen der Datei angezeigt, die in diesem Feld gespeichert ist! Jedoch nicht das eigentliche Bild!!!

    Ich habe mich schon durch unzählige ältere Postings im Forum gewühlt! Jetzt weiss ich, dass ich im heater mitteilen muss, dass ein bild geöffnet werden soll! Ich schaff es aber leider nicht!

    Ich poste mal den Code, damit mein Problem verständlicher wird:

    PHP-Code:

    <?php

      session_start
    ();
      include(
    "connect2db.inc.php");
      include(
    "usermanagment.inc.php");

      
    $userinfo CheckUserSession(session_id());

     include(
    "config.php");


    $db mysql_connect("localhost""root""");
    mysql_select_db("wp_project",$db);

    $result mysql_query(
    "SELECT right0, right1, right2, right3, right4, right5, right6, right7, right8, right9, right10, right11, right12, right13 FROM adminuser WHERE userid ='$userinfo[UserId]'");

    if (!
    $result) {
    echo(
    "<P>Error performing query: " .
    mysql_error() . "</P>");
    exit();
    }

    $userinfo=mysql_fetch_array($result);
    $userid=$userinfo["userid"];
    $right0=$userinfo["right0"];
    $right1=$userinfo["right1"];
    $right2=$userinfo["right2"];
    $right3=$userinfo["right3"];
    $right4=$userinfo["right4"];
    $right5=$userinfo["right5"];
    $right6=$userinfo["right6"];
    $right7=$userinfo["right7"];
    $right8=$userinfo["right8"];
    $right9=$userinfo["right9"];
    $right10=$userinfo["right10"];
    $right11=$userinfo["right11"];
    $right12=$userinfo["right12"];
    $right13=$userinfo["right13"];
    ?>
    <body bgcolor="#cccccc" link="#ffcc33" alink="#ffcc33" vlink="#ffcc33">
    <table bgcolor="#FFFFFF" cellspacing="0" cellpadding="0" align="center" >
    <tr>
        <td colspan="6"><img src="images/logo_oben.jpg" border="0"></td>
    </tr>
    <tr>
    <td><a href="admin_unreplyed.php"><img src="images/links.jpg" border="0"></a></td>
    <td><a href="admin_replyed.php"><img src="images/mitte.jpg" border="0"></a></td>
    <td><a href="admin_deathline.php"><img src="images/rechts.jpg" border="0"></a></td>
    <td><a href="index.php?action=logout"><img src="images/logout.jpg" border="0"></a></td>
    </tr>
    <?php if ($right0 == 'Y') {
    echo 
    '<tr>
    <td><img src="images/unten_links.jpg" border="0"></a></td>
    <td><a href ="user_administration.php"><img src="images/unten_mitte.jpg" border="0"></a></td>
    <td><a href ="admin_archiv.php"><img src="images/unten_rechtsII.jpg" border="0"></a></td>
    <td><img src="images/unten_ganzrechts.jpg" border="0"></a></td>
    </tr>'
    ;}?>
    </table>

    <br><br>

    <?php

    // Request info
    $result mysql_query(
    "SELECT * FROM kummerkasten WHERE id = $id");
    if (!
    $result) {
    echo(
    "<P>Error performing query: " .
    mysql_error() . "</P>");
    exit();
    }

    // Display the text
    while ( $row mysql_fetch_array($result) ) {
    $ticketnum=$row["id"];
    $anrede=$row["anrede"];
    $name=$row["name"];
    $email=$row["email"];
    $kdnr=$row["kdnr"];
    $maschinennr=$row["maschinennr"];
    $ordernr=$row["ordernr"];
    $range=$row["range"];
    $comment=$row["COMMENT"];
    $solution=$row["solution"];
    $attachment=$row["attachment"];
    $answertime=$row["answertime"];
    $replyfrom=$row["replyfrom"];
    $status =$row["status"];
    $know =$row["know"];
    $time =$row["time"];

    $custpdes htmlspecialchars("$custpdes"ENT_QUOTES);
    $custsdes htmlspecialchars("$custsdes"ENT_QUOTES);

    echo 
    '<table width="80%" border="0" align="center" cellpadding="3" cellspacing="0">
    <tr>
    <td width="20%" height="20" align ="right"><font face ="arial" size="2">lfd. #: </font></td>
    <td width="80%" height="20"><font face ="arial" size="2">'
    .$ticketnum.'</font></td>
    </tr>
    <tr>
    <td width="20%" height="20" align ="right"><font face ="arial" size="2">Anrede: </font></td>
    <td width="80%" height="20"><font face ="arial" size="2">'
    .$anrede.'</font></td>
    </tr>
    <tr>
    <td width="20%" height="20" align ="right"><font face ="arial" size="2">Name: </font></td>
    <td width="80%" height="20"><font face ="arial" size="2">'
    .$name.'</font></td>
    </tr>
    <tr>
    <td width="20%" height="20" align ="right"><font face ="arial" size="2">Email-Adresse: </font></td>
    <td width="80%" height="20"><font face ="arial" size="2">'
    .$email.'</font></td>
    </tr>
    <tr>
    <td width="20%" height="20" align ="right"><font face ="arial" size="2">Kundennr.: </font></td>
    <td width="80%" height="20"><font face ="arial" size="2">'
    .$kdnr.'</font></td>
    </tr>
    <tr>
    <td width="20%" height="20" align ="right"><font face ="arial" size="2">Maschinennr.: </font></td>
    <td width="80%" height="20"><font face ="arial" size="2">'
    .$maschinennr.'</font></td>
    </tr>
    <tr>
    <td width="20%" height="20" align ="right"><font face ="arial" size="2">Auftragsnr.: </font></td>
    <td width="80%" height="20"><font face ="arial" size="2">'
    .$ordernr.'</font></td>
    </tr><tr>
    <td width="20%" height="20" align ="right"><font face ="arial" size="2">Produktfeld: </font></td>
    <td width="80%" height="20"><font face ="arial" size="2">'
    .$range.'</font></td>
    </tr>
    <tr>
    <td width="20%" height="20" align ="right" valign ="top"><font face ="arial" size="2">Kommentar: </font></td>
    <td width="80%" height="20"><font face ="arial" size="2">'
    .$comment.'</font></td>
    </tr>
    <tr>
    <td width="20%" height="20" align ="right" valign ="top"><font face ="arial" size="2">Antwort: </font></td>
    <td width="80%" height="20"><font face ="arial" size="2">'
    .$solution.'</font></td>
    </tr>

    // Hier soll nun zunächst der Dateiname angezeigt werden, und dann soll bei einem klick darauf die Datei geöffnet werden!!

    <tr>
    <td width="20%" height="20" align ="right"><font face ="arial" size="2">Dateianhang:</font></td>
    <td width="80%" height="20"><font face ="arial" size="2">'
    .$attachment.'</font></td>
    </tr>


    <tr>
    <td width="20%" height="20" align ="right"><font face ="arial" size="2">erstellt am:</font></td>
    <td width="80%" height="20"><font face ="arial" size="2">'
    .$time.'</font></td>
    </tr>
    <tr>
    <td width="20%" height="20" align ="right"><font face ="arial" size="2">beantwortet von:</font></td>
    <td width="80%" height="20"><font face ="arial" size="2">'
    .$replyfrom.'</font></td>
    </tr>
    <tr>
    <td width="20%" height="20" align ="right"><font face ="arial" size="2">beantwortet am:</font></td>
    <td width="80%" height="20"><font face ="arial" size="2">'
    .$answertime.'</font></td>
    </tr>
    </table>'
    ;

    }
    Ich wäre euch echt wahnsinnig dankbar, wenn ihr mir vielleicht eure Lösungen in den Quellcode kopieren könntet! Ich schaff es alleine einfach nicht und es ist sehr wichtig!

    Vielen Dank schon mal für euer Bemühen.

    mfg

    Flo

  • #2
    Um welches Datenfeld geht es?
    Gibt es auch ein Datenfeld, das den MimeTyp (gif, jpeg, png, ...) beschreibt?

    In Deinem Script müßtest Du irgendwo das Bild positionieren
    <img src="img.php?bild_ID=1">

    Wie das img.php dazu aussehen könnte, wie man damit aus der DB ein Bild lädt.
    http://www.php-resource.de/forum/sho...threadid=17506

    Kommentar


    • #3
      Es geht um das Feld dateianhang bzw. attachment!

      ich hab im quelltext davor folgenden Kommentar geschrieben:

      // Hier soll nun zunächst der Dateiname angezeigt werden, und dann soll bei einem klick darauf die Datei geöffnet werden!!

      Wo brauch ich ein Datenfeld das den Mimetyp beschreibt!?
      In der Tabelle in der das Bild gespeichert ist?

      In dieser Tabelle werden neben den Bildern (Feld attachment) auch andere Daten (Text usw.) gespeichert! Es handelt sich also nicht um eine Tabelle, in der nur Bilder gespeichert werden!

      Muss der Aufruf des bildes mit einer eigenen Datei, in der eine Datenbankabfrage durchgeführt wird erfolgen!?

      Gruß Flo

      Kommentar


      • #4
        Original geschrieben von karibikjoe
        Wo brauch ich ein Datenfeld das den Mimetyp beschreibt!?
        In der Tabelle in der das Bild gespeichert ist?
        wäre wohl am zweckmässigsten.
        Muss der Aufruf des bildes mit einer eigenen Datei, in der eine Datenbankabfrage durchgeführt wird erfolgen!?
        ja. und diese wird dann in einem <img>-tag eingebunden, so wie hand es schon gesagt hatte.
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          eins ist mir nun noch nicht ganz klar!

          dieses Feld Mimetype: was sagt der Inhalt davon aus!?

          etwa um welches Dateiformat es sich bei dieser Datei handelt?

          dann muss dass beim anlegen des Datensatzes ja irgendwie da reingeschrieben werden!? es ist ja nicht immer der selbe dateityp...!?!?

          Kommentar


          • #6
            hi!

            ich hab jetzt mal die datei img.php angepasst, damit die datenbankverbindung hergestellt und die richtige Tabelle und der richtige Datensatz ausgewählt wird!

            Nun erscheint bei einem aufruf der Datei mit

            "localhost/img.php?id=1"

            ein Downloadfenster. Nun kann ich wählen ob ich die datei von ihrem aktuellen ort aus öffnen will oder ob ich sie speichern will!

            Irgendwas läuft da noch falsch!!
            Wenn ich sie in meine html-datei mit <img src="img.php?id=1"> einbinde und die datei öffne erscheint an der Stelle nur ein rotes kreuz!!

            Weiß jemand wo der Hund begraben liegen könnte!?

            Gruß Flo

            Kommentar


            • #7
              Zeig mal bitte Dein "img.php" Skript.

              Kommentar


              • #8
                PHP-Code:

                <?php
                // wegen des brauser caches (verhindert das cachen)
                header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Datum der Vergangenheit
                header ("Last-Modified: " gmdate ("D, d M Y H:i:s") . " GMT"); // immer geändert
                header ("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
                header ("Pragma: no-cache");

                // DB Verbindung
                $host  "localhost";
                $user  "root";
                $pwd  "";
                $db     "wp_project";
                mysql_connect($host,$user,$pwd)or die(mysql_error());
                mysql_select_db($db)or die(mysql_error());

                // bild daten holen
                $sql "SELECT mimetype, attachment
                        FROM kummerkasten 
                        WHERE id = 
                $id
                        LIMIT 1"
                ;
                $rs  mysql_query($sql);
                $row mysql_fetch_array($rs);

                // mimetype ausgeben
                header ("content-type: ".$row['mimetype']);
                // Bild ausgeben
                echo $row['attachment'];
                // db stuff
                mysql_free_result($rs);
                mysql_close();
                ?>

                Kommentar


                • #9
                  Du hast da eine Header Anweisung
                  PHP-Code:
                  header ("content-type: ".$row['mimetype']); 
                  Hier muß letztendlich der richtige MimeType angegeben werden. Zum Beispiel
                  PHP-Code:
                  header ("content-type: image/jpeg"); 
                  Also es hängt davon ab was in der Datenbank im Feld $row['mimetype'] steht.

                  Jetzt die Frage was steht in diesem Feld (Inhalt)?

                  Übersicht von Mime-Typen
                  http://www.hivemail.com/mime.types.phps
                  oder
                  http://selfhtml.teamone.de/diverses/...htm#uebersicht

                  Kommentar


                  • #10
                    ich habe eine jpg datei als anhang mitgeschickt und in das Feld mimetype hab ich

                    image/jpeg

                    geschrieben!

                    Das müsste doch dann funktionieren!!!!????

                    Soll ich in der header-anweisung als content type die variable stehen lassen oder reinschreiben "image/jpeg"!

                    Denn wenn er sich den mimetype anhand von der variablen $row["mimetype"] aus der Datenbank holt muss er ja beim erstellen des datensatzes wissen welcher dateityp die mitgeschickte datei ist!?!??

                    Was mir noch aufgefallen ist: Wenn ich mir von der mitgeschickten datei im explorer die eigenschaften anschauen hat die datei eine größe von 3 KB!

                    Wenn ich mir mit phpmyadmin den Datensatz anschaue, dann steht im feld attachment folgendes:

                    [BLOB - 55 Bytes]

                    Da scheint doch was nicht zu stimmen!? Ist da nur der Dateiname darin gespeichert? Aber das feld ist doch vom typ blob!!

                    Und in meinem eingabeformular wird die datei mit folgendem Code verschickt:

                    PHP-Code:

                     
                    <tr
                          <
                    td width="30%"
                            <
                    div align="right"><font face="Arial" size="2">Dateianhang:</font></div>
                          </
                    td>
                          <
                    td width="70%"
                            <
                    div align="left"
                              <
                    input name="attachment" type="file" size="30" maxlength="100000" accept="text/*">
                            </
                    div>
                          </
                    td>
                        </
                    tr

                    Kommentar


                    • #11
                      Ich weiß ja nicht was Du bei der Verarbeitung des uploadet Files alles machst, deshalb Schau Dir bitte einmal kurz das Thema FILE-UPLOAD durch
                      http://www.dclp-faq.de/q/q-formular-upload-php4.html
                      http://at.php.net/features.file-upload

                      Kommentar


                      • #12
                        natürlich bin ich doof!!


                        das "maxlength="100000" accept="text/*" ist natürlich hier fehl am platz!
                        habs rausgelöscht damit jetzt nur noch dasteht:

                        <input name="attachment" type="file" size="30">

                        Leider gehts immer noch nicht!!!???

                        Die Tatsache, dass phpmyadmin in dem Feld attachment eine dateigröße von 55 Bytes anzeigt lässt darauf schließen dass die Datei gar nicht in dem Datensatz gespeichert ist!!!

                        Mach ich da was grundsätzliches falsch beim dateiupload!?
                        gespeichert wird es in einem feld vom typ blob!!!

                        Was ist hier falsch?!?!?


                        Gruß Flo

                        Kommentar


                        • #13
                          Hast Du Dir das Thema FILE-UPLOAD durchgelesen?
                          Ohne zu wissen wie Du die Datenbank befüllst ist es nicht möglich zu helfen. Wobei in der Beschreibung eigentlich alles beschrieben steht was zu beachten ist

                          http://www.dclp-faq.de/q/q-formular-upload-php4.html

                          IEin Außenstehender könnte nur kontrollieren ob die Verarbeitung die Du gecodet hast mit der Beschreibung

                          zb.: _FILES['attachment']['tmp_name']
                          Diese Variable enthält den Namen der Datei in einem temporären Verzeichnis auf dem Server. Sie kann von dort mit einem move_uploaded_file() -Aufruf abgeholt werden.


                          soweit übereinstimmt.

                          Nachfolgender Artikel beschreibt
                          http://www.phpbuilder.com/columns/florian19991014.php3 wie man Binärdaten (also auch Bilder) in einer MySQL-Datenbank speichern kann.

                          Kommentar

                          Lädt...
                          X