bilder in mysql speichern
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abgespeichert
beitrag
bild
blob
datei
dateiname
erforderlich datei
error
fehler
formen
gen
image
insert
kramen
mode
muster
not
speicher
status
zielverzeichnis
-
Hallo an alle
ich m?chte bilder oder die links von bilder in meine sql datenbank speichern
dieses hab ich ausprobiert aber die bilder werden nicht gespeichert sondern nur leere datens?tze.
und eine fehlermeldung:
Warning: fread(): supplied argument is not a valid stream resource in test.php on line 15
der code
<? $Bild = fread(fopen($Bild, "r"), filesize($Bild)); $Bild = addslashes($Bild); include ("config.inc.php"); mysql_query("INSERT INTO firmen_db (Bild) VALUES ('$Bild')"); if($Bild) { echo "Bild wurde hochgeladen und abgespeichert!"; } mysql_close(); ?> <html> <body> <form action="<?=$PHP_SELF?>" method="post" enctype="multipart/form-data"> <input type="file" name="Bild"><br> <input type="submit" value="Hochladen"> </form> </body> </html>
ich hoffe es kann mir jemand helfen -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Ist doch klar,
denn du hast die Variable $Bild nicht richtig "gesetzt"
Du musst vor dem Kram:
$Bild = fread(fopen($Bild, "r"), filesize($Bild));
$Bild = addslashes($Bild);
zuerst noch sagen, was bild ist also so:
$Bild = $_FILES["Bild"]["name"]; -
Erstmal rate ich dir die Seite von meinem Freund anzusehen: http://www.johny7.de.vu Er hat dort unter http://johny7.milten.lima-city.de/files/phps/inf10/blobs.php (Quellcode: http://johny7.milten.lima-city.de/files/phps/inf10/blobs.phps sowie http://johny7.milten.lima-city.de/files/phps/inf10/blob_1.phps) ein gutes Beispiel.
Wichtig ist, dass deine Datenbank-tabellenspalte den Typ BLOB hat.
Einf?gen kannst du dann so:
$image = imagecreatefromjpeg(mysql_escape_string($bild)); $sql="INSERT INTO firmen_db (Bild) VALUES ('".$image."');"; mysql_query($sql) OR die("Fehler");
Das habe ich zwar noch nicht probiert, aber das ist auch nicht so elegant, wie die Variante bei johny7 mit File-Upload-Feldern:
Datei blobs.php:
echo '<form action="blobs.php?mode=do" method="POST" enctype="multipart/form-data"> <!--enctype ist bei file-Upload erforderlich!--> Datei: <input name="datei" type="file" size="50" maxlength="65536" accept="image/*" /> <input type="Submit" value="Hochladen"> </form>'; if ($mode=="do") { include ("config.inc.php"); if (isset($HTTP_POST_FILES["datei"])) { $_FILES=$HTTP_POST_FILES;// Upload-Status if ($_FILES["datei"]["error"] == UPLOAD_ERR_OK) { // Muster zur ?berpr?fung der im Dateinamen // enthaltenen Zeichen (Optional) $regExp = "/^[a-z_]([a-z0-9_-]*\.?[a-z0-9_-])*\.[a-z]{3,4}$/i"; // Dateiname und Dateigr?sse if (preg_match($regExp,$_FILES["datei"]["name"]) && $_FILES["datei"]["size"] > 0 && $_FILES["datei"]["size"] < 65536) { // Tempor?re Datei in das Zielverzeichnis // des Servers verschieben. $arrayfile = file($_FILES["datei"]["tmp_name"]); for($x=0;$x<count($arrayfile);$x++){ $binar .= mysql_escape_string($arrayfile[$x]); } $sql="INSERT INTO firmen_db (Bild) VALUES ('".$binar."');"; mysql_query($sql) OR die("Fehler"); header("Location: blobs.php"); mysql_close(); // Redirect zur Erfolgs-Meldung } else { echo "Fehler: Im Dateinamen oder Dateigr?ssen Limit!"; } } else { echo "Fehler: W?hrend der ?bertragung aufgetreten!"; } } else { echo "Fehler: Dateiupload fehlgeschlagen!"; } }else { header("Location: blobs.php"); }
Du kannst ja bei johny7 mal testweise Bilder hochladen. Dann siehst du am Besten, wie's funktioniert. Noch viel erfolg...
Beitrag ge?ndert am 31.01.2006 13:03 von christenlieder -
Erst einmal danke f?r eure schnelle antworte
ich hatte das ganze wochenende getestet und gelesen
hatte schon kopfwe.
werde ich noch heute testen.
nochmals danke
-
Erstmal rate ich dir die Seite von meinem Freund anzusehen: http://www.johny7.de.vu Er hat dort unter http://johny7.milten.lima-city.de/files/phps/inf10/blobs.php (Quellcode: http://johny7.milten.lima-city.de/files/phps/inf10/blobs.phps sowie http://johny7.milten.lima-city.de/files/phps/inf10/blob_1.phps) ein gutes Beispiel.
Wichtig ist, dass deine Datenbank-tabellenspalte den Typ BLOB hat.
Einf?gen kannst du dann so:
$image = imagecreatefromjpeg(mysql_escape_string($bild)); $sql="INSERT INTO firmen_db (Bild) VALUES ('".$image."');"; mysql_query($sql) OR die("Fehler");
Das habe ich zwar noch nicht probiert, aber das ist auch nicht so elegant, wie die Variante bei johny7 mit File-Upload-Feldern:
Datei blobs.php:
echo '<form action="blobs.php?mode=do" method="POST" enctype="multipart/form-data"> <!--enctype ist bei file-Upload erforderlich!--> Datei: <input name="datei" type="file" size="50" maxlength="65536" accept="image/*" /> <input type="Submit" value="Hochladen"> </form>'; if ($mode=="do") { include ("config.inc.php"); if (isset($HTTP_POST_FILES["datei"])) { $_FILES=$HTTP_POST_FILES;// Upload-Status if ($_FILES["datei"]["error"] == UPLOAD_ERR_OK) { // Muster zur ?berpr?fung der im Dateinamen // enthaltenen Zeichen (Optional) $regExp = "/^[a-z_]([a-z0-9_-]*\.?[a-z0-9_-])*\.[a-z]{3,4}$/i"; // Dateiname und Dateigr?sse if (preg_match($regExp,$_FILES["datei"]["name"]) && $_FILES["datei"]["size"] > 0 && $_FILES["datei"]["size"] < 65536) { // Tempor?re Datei in das Zielverzeichnis // des Servers verschieben. $arrayfile = file($_FILES["datei"]["tmp_name"]); for($x=0;$x<count($arrayfile);$x++){ $binar .= mysql_escape_string($arrayfile[$x]); } $sql="INSERT INTO firmen_db (Bild) VALUES ('".$binar."');"; mysql_query($sql) OR die("Fehler"); header("Location: blobs.php"); mysql_close(); // Redirect zur Erfolgs-Meldung } else { echo "Fehler: Im Dateinamen oder Dateigr?ssen Limit!"; } } else { echo "Fehler: W?hrend der ?bertragung aufgetreten!"; } } else { echo "Fehler: Dateiupload fehlgeschlagen!"; } }else { header("Location: blobs.php"); }
Du kannst ja bei johny7 mal testweise Bilder hochladen. Dann siehst du am Besten, wie's funktioniert. Noch viel erfolg...
Beitrag ge?ndert am 31.01.2006 13:03 von christenlieder
das mit dem blob stimmt nicht,
geht auch mit nem ganz normalen VARCHAR oder eben TEXT -
ich hab mal gelesen das man nur die links
wo die bilder liegen in eine datenbank speichern sollte und nicht die bilder selbst in die datenbank
ablegen sollte.??????????????????????????
-
ich hab mal gelesen das man nur die links
wo die bilder liegen in eine datenbank speichern sollte und nicht die bilder selbst in die datenbank
ablegen sollte.??????????????????????????
dann hast du richtig gelesen, denn das abspeichern ganzer bilder in einer Datenbank ist f?r den Server enorm aufwendig und beeintr?chtigt die Leistung des Servers. Sowas ist hier eigentlich nicht gern gesehen, aber dennoch erlaubt -
kannste mir einen tip geben wie ich das machen kann
?????
ich habs schon mal selbst versucht und
naja -
<?$image = imagecreatefromjpeg(mysql_escape_string($bild));
ist dieser code jetzt richtig oder nicht?
wenn ich auf diese art das bild in die datenbank schreibe, wie kann ich es wieder ausgeben? -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage