Bild / Datei in Datenbank speichern

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

  • Bild / Datei in Datenbank speichern

    Hi, die Situation ist wie folgt:
    MS SQL Server
    IIS Webserver
    PHP 4.x

    Alles läuft paletti, manche Gif´s können in die DB geschrieben werden, alles andere gibt nur Datenbank Fehlermeldungen.

    Hier das Script:
    PHP-Code:
    <?

    <html>

    <head>

    <title>Datei-Upload</title>

    <link rel="stylesheet" type="text/css" href="tecdoc.css">

    <script language="JavaScript">

    <!--

    function setz(wert) #Funktion um den Namen zu übergeben (eigentlich brauche ich die nicht mehr..)

    {

      document.upl.test.value=wert;

      return false;

    }

    //-->

    </script>

    <noscript></noscript>

    </head>

    <body text="#000000" bgcolor="#E0E0E0">

    <font face="Arial">

    <form name="upl" action="<? echo $_SERVER['PHP_SELF']; ?>"  # das Formular für die Dateiauswahl

    method="post" enctype="multipart/form-data">

    <input type="hidden" name="MAX_FILE_SIZE" value="50000">

    <table>

    <tr>

    <td style='border:1px solid #CCCCCC' colspan="3">

    <input class="auswahl" type="file" name="datneu" onBlur="javascript:setz(this.value)">

    <input type="hidden" name="test" value="">

    </td>

    </tr>

    <tr>

    <td style='border:1px solid #CCCCCC'>

    <input class="auswahl" type="Submit" name="sent" value="Hochladen">

    </td>

    <td style='border:1px solid #CCCCCC' align="right">

    <input class="auswahl" type="Submit" name="showit" value="Dateien anzeigen">

    </td>

    </tr>

    </table>

    </form>



    <?php



    echo "<form method='post'>";

    echo 
    "<table width='245' cellpadding='0' cellspacing='1' border='0'>";



    require(
    "connect2.php");



    if(isset(
    $_POST['sent']))# wenn Datei geendet wurde

    {

      unset(
    $showit);

      unset(
    $kill);

      
    $fehler="";

      
    $typ="";

      
    $datei=$_POST['test'];         &nb sp;             # Name, Grösse, Pfad rausbekommen

      
    $datei=str_replace("\\\\","\\",$datei);

      
    $groesse=$_FILES['datneu']['size'];

      echo 
    "<u>Details:</u><br>";

      echo 
    "$datei<br>";

      
    $groesse2=round($groesse/1024,2);

      echo 
    "$groesse2 K<br>";

      
    $dateiname=$_FILES['datneu']['name'];

      
    $endung=substr(strrchr($dateiname,"."),1);

      if(
    $dateiname=="")

      {

        
    $endung="";

        
    $fehler="Keine Datei ausgewählt!";

      }

      switch(
    $endung)         &nbs p;   #Überprüfung des Dateityps

      
    {

        case 
    "jpeg": case "jpg": case "jpe":

          
    $typ="image/jpeg"; break;

        case 
    "gif":

          
    $typ="image/gif"; break;

        case 
    "bmp":

          
    $typ="image/bmp"; break;

        case 
    "png":

          
    $typ="image/png"; break;

        case 
    "tif": case "tiff":

          
    $typ="image/tiff"; break;

        default:

          if(
    $endung!="")

          {

            
    $fehler="Dateityp ist nicht zulässig!";

          }

      }

      if(
    $groesse2>200)         &nbs p#wenn datei zu gross

      
    {

        
    $fehler.="Datei ist zu groß!";

      }



      if(!
    $fehler)        # wenn kein Fehler aufgetreten ist, datei hochladen

      
    {

        
    $dat=fopen($HTTP_POST_FILES['datneu']['tmp_name'], "rb");

        
    $data=fread($dat$HTTP_POST_FILES['datneu']['size']);

        
    $data=addslashes($data);



        
    $sql_ins="INSERT INTO $tabelle (objectid,blobid,blobsize,lastmodified,name,data) values (100001,100001,$groesse,'14.01.2003 12:53:23','".$HTTP_POST_FILES['datneu']['name']."','$data')";

        if(!
    mssql_query($sql_ins,$verbindung))         #INSERT der DB (Zeile 113)

        
    {

          
    $fehler="Upload gescheitert!";

        }

        else

        {

          
    $text="<font color='#00E090' size='2'><b>$dateiname wurde in die Datenbank aufgenommen</b></font>";

          echo 
    "<tr><td bgcolor='#F0F0F0' align='center'>$text</td></tr>";

        }

      }

      else

      {

        echo 
    "<tr><td align='center' bgcolor='#F0F0F0'><font color='#DF0000' size='2'><b>$fehler</b></font></td></tr>"< /font>;

      }

    }

    #*********ab hier ist es eigentlich unwichtig********

    if(isset($_POST['showit']))        < font color="#FF8000">#falls man "Dateien anzeigen" angeklickt hat



    {

      unset(
    $sent);

      unset(
    $kill);



      
    $sql_sel="SELECT blobid,name,blobsize FROM $tabelle"#Datenbank nach den Dateien ausfragen

      
    $result=mssql_query($sql_sel,$verbindung);



      if(
    mssql_num_rows($result)>0#dateien auflisten

      
    {

        echo 
    "<tr><td style='border:1px solid #CCCCCC' bgcolor='#F0F0F0' colspan='3'><font size='1'>Folgende Dateien sind in der Datenbank vorhanden:</font></td></tr>";

        echo 
    "<tr><td><font size='1'><b>Name</b></font></td><td align='right'><font size='1'><b>Größe</b></font></td><td> < /td></tr>";

        for(
    $i=0;$i<mssql_num_rows($result);$i++)

        {

          if(
    $i == 0)

          {

            
    $farbe="#F0F0F0";

          }

          if(
    $i == 1)

          {

            
    $farbe="#E0E0E0";

          }



          
    $name=mssql_result($result,$i,'name');

          
    $laenge=strlen($name);

          if(
    $laenge>15)

          {

            
    $kurz=substr($name,0,15)."...";

          }

          else

          {

            
    $kurz=$name;

          }



          echo 
    "<tr bgcolor='".$farbe."'><td style='border:1px solid #CCCCCC'><a href='show2.php?ID=".mssql_result($result,$i,'blobid')."' target='_blank'><font size='1' color='#0060FF'><tt>".$kurz."</tt></font></a></td><td style='border:1px solid #CCCCCC' align='right'><font size='1'><nobr> ".mssql_result($result,$i,'blobsize')." KB</nobr></font></td><td style='border:1px solid #CCCCCC' align='right'><input class='auswahl' type='Checkbox' name='".mssql_result($result,$i,'blobid')."'></td></tr>";

        }

      }

      else

      {

        echo 
    "<tr><td bgcolor='#F0F0F0' align='center'><font color='#DF0000' size='2'><b>Keine Dateien vorhanden</b></font>";

      }

    }



    if(isset(
    $_POST['kill']))    #Dateien löschen

    {

      unset(
    $sent);

      unset(
    $showit);



      
    $d=0;



      if(
    count($HTTP_POST_VARS)>1)

      {

        foreach(
    $HTTP_POST_VARS as $schluessel => $wert)

        {

          if(
    $schluessel!="kill")

          {

            
    $sqldel="DELETE FROM $tabelle where blobid = '".$schluessel."'";

            @
    mssql_query($sqldel,$verbindung);

            
    $d++;

          }

        }

         echo 
    "<tr><td bgcolor='#F0F0F0' align='center'><font color='#DF0000' size='2'><b>$d Dateien gelöscht</b></font></td></tr>";

      }

      else

      {

        echo 
    "<tr><td bgcolor='#F0F0F0' align='center'><font size='2' color='#DF0000'><b>Keine Dateien zum Löschen ausgewählt!</b></font></td></tr>";

      }

    }



    echo 
    "</table>";

    echo 
    "<table><tr><td><br><input type='Submit' name='kill' value='Löschen'></td></tr></table>";

    echo 
    "</form>";
    ?>
    </font>

    </body>

    </html>

    ?>
    und jetzt die Ausgabe mit den Fehlermeldungen darunter:


    Code:
    Details:
    
    C:TempBeispiel.jpg
    
    9.66 K
    
    Warning: mssql_query() [function.mssql-query]: message: Zeile 9: Falsche Syntax in der Nähe von '{'. (severity 15) in c:inetpubwwwrootHLhtmlupload2.php on line 113
    
    
    
    Warning: mssql_query() [function.mssql-query]: message: Bezeichner (beginnend mit 'ê}›œ¨H_2U׌kœÝÍ¥s[ ½Üÿ\0ZqßîGê%_L“u/ÔÔ{Ô3_C{‚ޏ\'1õÄ–< £õD…XýÐÅc:\inetpub\wwwroot\HL\html\upload2.php on line 113
    
    
    
    Warning: mssql_query() [function.mssql-query]: message: Bezeichner (beginnend mit '-¼÷{˜màÈÔô§¶wŒñ\\gò‚ÓÔ½WØœ+ [ÿ\0W¾)*Xüä»S,È¢¥ö¼nÚã-XkV†›}H {§˜·Åñ—\"\'§u|Ù×y*©Kçœê\\h:‚¶& #8240;¬··¶¤ô•Çûϝ;ýáÙX í¶åË5Ë’éÈ’') ist zu lang. Die Maximallänge beträgt 128. (severity 15) in c:\inetpub\wwwroot\HL\html\upload2.php on line 113
    
    
    
    Warning: mssql_query() [function.mssql-query]: message: Bezeichner (beginnend mit '`ð›8¬eT·ÉJ5ø¤I² s‚Ò³RËc:\inetpub\wwwroot\HL\html\upload2.php on line 113
    
    
    
    Warning: mssql_query() [function.mssql-query]: message: Bezeichner (beginnend mit '>áX‹»†Œa>ÕXl_^j&õ…åò ÛÎ2ÒA-AÜ…hƒ† Õ¥Êûjá\"w¶ÆQ.äGÅÙ3¶öæàÂ東3 Äý_Ü<Ñ8&VÂ|2‚¼œÛ#¯r2·uê²öÿ\0xV¡-u$IÜ|V){; ƒhÛ”s AoNÊ=') ist zu lang. Die Maximallänge beträgt 128. (severity 15) in c:\inetpub\wwwroot\HL\html\upload2.php on line 113
    
    
    
    Warning: mssql_query() [function.mssql-query]: message: Bezeichner (beginnend mit 'ùN!z7/¸û›X¦\"…íñ~aƒ&#8212 ;ÌX‹æÜ05 ¬öóW[ͽÉnå~ð¨-dU[›±pǚīk)Œ0š& ;#353;UUßÄD®}( ¢ÆjÖÃj77ÄOÑTÖ éóW<=_6gr_¨´Iì¬ h|€³*¦êC.pÏ!Ú¬(0 x!') ist zu lang. Die Maximallänge beträgt 128. (severity 15) in c:inetpubwwwrootHLhtmlupload2.php on line 113
    
    
    
    Warning: mssql_query() [function.mssql-query]: message: Öffnendes Anführungszeichen vor der Zeichenfolge ')'. (severity 15) in c:inetpubwwwrootHLhtmlupload2.php on line 113
    
    
    
    Warning: mssql_query() [function.mssql-query]: Query failed in c:inetpubwwwrootHLhtmlupload2.php on line 113


    Hat da wer nen Rat für mich? oder ein eigenes (funktionierendes) upload Script?
    (und bitte keine Antworten von wegen: Bilder nicht in die DB laden. Das das langsamer ist ist MIR klar, aber die Leutz wollen es halt so haben)

    thx, masta

  • #2
    ach du sch***
    n bischen lang geworden.. gibts keinen Zeilenumbruch beim CODE und PHP?
    sorry

    Kommentar


    • #3
      lass dir die query-strings, die du erzeugst, doch erstmal per echo ausgeben, bevor du sie an mssyql-query() übergibst - vermutlich steht da nicht das drin, was du erwartest.
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar


      • #4
        Allgemein: müssen dateien denn wirklich in die db?

        Kommentar


        • #5
          @ wahsaga:

          Doch, die query strings scheinen ok zu sein, deshalb versteh ich das ja nicht

          ---------

          @ tabiaz:

          Ich würd lieber per Bild in Verzeichnis / Link in Datenbank machen, aber es sit halt so gewünscht, das das Bild mit in die DB geladen wird ...

          Hat irgendwer n Script wo das klappt?

          Kommentar


          • #6
            Original geschrieben von MastaET
            Ich würd lieber per Bild in Verzeichnis / Link in Datenbank machen, aber es sit halt so gewünscht, das das Bild mit in die DB geladen wird ...

            Hat irgendwer n Script wo das klappt?
            Wer hat sich das denn ausgedacht? Ich empfehle Dir Deinem Kunden zu erklären, was passiert, wenn die Datenbestände größer werden. Bilder und andere "binäre" Daten schreibt man nicht in eine Datenbank. Dadurch würde sie nur unnötig aufgebläht werden.

            Kommentar

            Lädt...
            X