Upload von Datei in eine Datenbank

Alles, was PHP betrifft, kann hier besprochen werden.

Upload von Datei in eine Datenbank

Postby family19660 » 14. September 2010 18:04

Hallo zusammen,

ich sitze seit Tagen an einem Problem.

Ziel: Speichern von Dateien in einer mysql-Datenbank

Bisheriges Ergebnis: Dateien bis zu einer bestimmten Größe lassen sich Problemlos in der Datenbank speichern. Ab einer gewissen Größe (über 1MB ?) erfolgt keine Speicherung.

Folgende Einstellungen in der php.ini :
file_uploads = On
upload_max_filesize = 32M
post_max_size = 32M

hier der Code dazu

Code: Select all
<?php
 
$Benutzername = "admin";
$Passwort = "test";
 
 
if($_SERVER['PHP_AUTH_USER'] == $Benutzername && $_SERVER['PHP_AUTH_PW'] == $Passwort)
{
?>

<html>
<head>
<title>Binärdaten in einer MySQL-Tabelle speichern</title>
</head>
<body bgcolor="white" text="#000000" link="red" vlink="gray" alink="#FE8B5A" background="nth_theme_business_classic_speedy_bg.gif">
<?php

$datum = date("j.n.Y");

$DatabaseHost     = "localhost";
$DatabaseUser     = "root";
$DatabasePassword = "sunshine";
$Database         = "test";

if($_REQUEST['Send'])
{
   $DatabasePointer=mysql_connect($DatabaseHost, $DatabaseUser, $DatabasePassword);
   mysql_select_db($Database, $DatabasePointer);

   if(isset($_FILES['Datei']['name']) && $_FILES['Datei']['name']!="none")
   {
      $Daten = addslashes(fread(fopen($_FILES['Datei']['tmp_name'], "rb"), filesize($_FILES['Datei']['tmp_name'])));
      

      $SQL = "INSERT INTO hinweise ";
      $SQL .= "(Dateiname, Dateigroesse, Dateityp, bezeichnung, datum ) VALUES ";
      $SQL .= "('".$_FILES['Datei']['name']."', '".$_FILES['Datei']['size']."', '".$_FILES['Datei']['type']."', '".$Daten."', '".$datum."', '".$_POST['text']."')";
      
      
      mysql_query($SQL, $DatabasePointer);

      if(mysql_affected_rows($DatabasePointer)==1)
      {
      ?>
      <table border="0">
    <tr>
        <td width="1231">
            <p align="center"><font face="Verdana" size="3"><?php
         echo"Die Datei &quot;",
            $_FILES['Datei']['name'],
            "&quot; wurde in die Tabelle eingef&uuml;gt.";
            $id = mysql_insert_id();
            echo $id?><input type="hidden" name = "id" value="<?php echo $id;?>"> </font></p>
        </td>
    </tr>
</table>

      
            <form action ="hochladen_speichern.php" method="post">

    <p><input type="hidden" name = "id" value="<?php echo $id;?>">             
    </p>
</form>
<form method="post" action="hochladen_speichern.php">
    <p><input type="hidden" name = "id" value="<?php echo $id;?>"> </p>
    <p>&nbsp;</p>
    <p>&nbsp;</p>
</form>
<form action ="hochladen_speichern.php" method="post">

    <p align="center"><input type="submit" name="formbutton1" value="Zusätzliche Angaben erfassen"><input type="hidden" name = "id" value="<?php echo $id;?>">
</form>
<p align="center">&nbsp;</p>
<p>


<?php            
      }
      else
      {
         echo"Die Datei &quot;",
            $_FILES['Datei']['name'],
            "&quot; konnte nicht in die Tabelle eingef&uuml;gt werden.";
      }
   }
   else
   {
      echo"Bitte gehen Sie <a href=\"javascript:history.back();\">zur&uuml;ck</a> und geben Sie eine Datei zum Speichern in der Tabelle an.";
   }
}
else
{
?>
</p>
<p>&nbsp;</p>
<p align="center"><font face="Verdana">&nbsp;Hinweise erfassen</font></p>
<p align="center"><font face="Verdana">&nbsp;</font></p>
<form action="<?php echo$_SERVER['PHP_SELF']; ?>" enctype="multipart/form-data" method="post">
    <p align="center"><font face="Tahoma" size="2">Datei laden:</font> <input name="Datei" type="file"><br>

<p align="center"><textarea name="text" rows="5" cols="80"></textarea><br><br>
<input name="Send" type="submit" value="Speichern"></form>
<?php
}
?>
<?php
}
else
{
    header("WWW-Authenticate: Basic realm=\"Zugang Handbuch Systemverwalter\"");
    header("HTTP/1.0 401 Unauthorized");
    echo"Diese Webseite ist zugriffsgeschützt.";
}
?>
</body>
</html>


Woran kann dies liegen. Ich möchte jedoch hier keine Diskussion über den Sinn oder Unsinn des Speicherns von Dateien in einer Datenbank führen, sondern wäre über jede Hilfe dankbar.
family19660
 
Posts: 16
Joined: 27. March 2009 20:17
Operating System: Windows 7 - php 5.3.8

Re: Upload von Datei in eine Datenbank

Postby daniel85 » 23. September 2010 06:48

Moin,

ist das richtig, dass du in deinem INSERT Befehl die $Daten in die spalte Bezeichnung speicherst? Du willst 6 Spalten speichern, gibst aber nur 5 an.

Was für einen Datentyp hast du in der Spalte Bezeichnung, wo du die Datei speichern möchtest? Um den Upload mal zu testen kannst du in phpmyadmin direkt eine Datei in die DB speichern, wenn der Typ auf BLOB oder LONGBLOB o. ä. steht, dann wird beim DS einfügen direkt ein Upload angeboten, wo auch die maximale Uploadgröße angezeigt wird. Dort kannst du immerhin schonmal testen ob es an deinem Script, der Tabelle oder an der PHP Installation liegt.

Gruß
daniel85
 
Posts: 6
Joined: 22. September 2010 21:53


Return to PHP

Who is online

Users browsing this forum: No registered users and 49 guests