Hi mir stellt sich folgendes Problem. Ich habe mir ein noch sehr einfaches Upload script geschrieben, mit dem die User meiner Website bilder in meine Datenbank laden können.
Das Script zum Upload sieht folgendermaßen aus.
In der Datenbank sind folgende Felder mit folgenden Eigenschaften vorhanden.
ID;int;unsigned;auto_increment;primary
dateityp;char
datum;date
zeit;time
name;varchar
linktext;varchar
kategorie;varchar
beschreibung;mediumtext
datei;longblob;binary
Wenn ich nun eine Datei hochlade werden zwar alle Daten gespeichrt, nur nicht die Datei. Woran liegt das? Im Script ist kein Fehler - danke ich seht stark. Ich habe das Script schon auf Schreibfehler überprüft - negativ. An was kann es noch liegen?
Viele Grüße, Berti
Das Script zum Upload sieht folgendermaßen aus.
PHP-Code:
<html><head>
<title>Database Upload</title>
<style type="text/css">
.table_text {color: #000000; font-family: Verdana; font-size: 12px; text-align: justify;}
.table_alert {color: #cc0000; font-family: Verdana; font-size: 10px; text-align: justify;}
</style>
</head><body>
<?php
if($_POST['sent'])
{
if(!is_uploaded_file($_FILES['neuedatei']['tmp_name']))
{
$fehler="Es wurde keine Datei hochgeladen.<br>";
}
else
{
if($_FILES['neuedatei']['size']>1000000)
{
$fehler.="Die Daetei ist zu groß.<br>";
}
if(!($_FILES['neuedatei']['type'] == 'image/jpeg' OR $_FILES['neuedatei']['type'] == 'image/gif'))
{
$fehler.="Der Dateityp ist nicht zulässig!<br>";
}
}// Ende ELSE; keine Datei hochgeladen
if(!$fehler)
{
include('connect.php');
$datei=fopen($_FILES['neuedatei']['tmp_name'], 'rb');
$data=addslashes(fread( $datei, $_FILES['neudatei']['size']));
$sql="INSERT INTO ".$tabellenname." (name, linktext, beschreibung, kategorie, dateityp,
datum, zeit, datei) values ('".$_POST['name']."', '".$_POST['linktext']."',
'".$_POST['beschreibung']."', '".$_POST['kategorie']."', '".$_FILES['neuedatei']['type']."',
now(), now(), '".$data."')";
if(!mysql_query($sql, $link))
{
$fehler.="Der Upload ist aufgrund eines Datenbankfehlers gescheitert. Bitte
versuche es später noch einmal.<br>";
}
}
if($fehler)
{
echo "<div class=table_alert>".$fehler."</div><br>";
}
else
{
echo "<div class=table_alert>Der Upload wurde erfolreich durchgeführt.</div><br>";
unset($_POST['name']);
unset($_POST['linktext']);
unset($_POST['beschreibung']);
unset($_POST['kategorie']);
}
}//Ende $_POST['sent']
?>
<form action="<? echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data">
<input type="hidden" name="sent" value="1">
<div class="table_text">Gib hier bitte zuerst deinen Namen ein!<br>
<input type="text" name="name" value="<?php echo $_POST['name']; ?>" size="30"></div>
<div class="table_text">Füge hier bitte einen Linknamen ein!<br>
<input name="linktext" type="text" value="<? echo $_POST['linktext']; ?>" size="30">
<br>
</div>
<div class="table_text">Gib hier bitte eine Kurzer Beschreibung des Uploads ein!<br>
<textarea name="beschreibung" cols="30" rows="4"><? echo $_POST['beschreibung']; ?></textarea>
<br></div>
<div class="table_text">Wähle eine Kategorie aus!<br>
<select name="kategorie">
<option>Fun
<option>Menschen
<option>Sonstiges
<option>Logos
<option>Comics
</select></div>
<div class="table_text">Wäle zum Schluss bitte noch die Datei aus!<br>
<input name="neuedatei" type="file" size="30">
</div>
<br>
<input type="submit" value="Upload!"> <input type="reset" value="xXx Daten löschen!">
</form>
</body></html>
ID;int;unsigned;auto_increment;primary
dateityp;char
datum;date
zeit;time
name;varchar
linktext;varchar
kategorie;varchar
beschreibung;mediumtext
datei;longblob;binary
Wenn ich nun eine Datei hochlade werden zwar alle Daten gespeichrt, nur nicht die Datei. Woran liegt das? Im Script ist kein Fehler - danke ich seht stark. Ich habe das Script schon auf Schreibfehler überprüft - negativ. An was kann es noch liegen?
Viele Grüße, Berti
Kommentar