WebWork Magazin - Webseiten erstellen lassen, Online Medien, html

Webhoster, Webhosting Provider und Domain registrieren

Home | Registrieren | Einloggen | Suchen | Aktuelles | GSL-Webservice | Suleitec Webhosting
Reparatur-Forum | Elektro forum | Ersatzteilshop Haushalt und Elektronik



Im Homepage und Webhosting-Forum --- Binär-Daten von Upload in DB speichern

Scripte und Programme für PHP, MYSQL. Diskussionen zur Programmierung im Web. Fragen zu CMS, Blogsoftware, Shops, Newsletter und vielen weiteren Scripten.

Forum » PHP & MySQL » Binär-Daten von Upload in DB speichern - 29 März 2024 Antworten
im Forum für Webhosting Homepage gefunden:
Binär-Daten von Upload in DB speichern
jans16
Pixelschubser
Threadstarter




Beiträge: 2

Hallo!
Ich wollte gern Bilder vom Upload per PHP in einer MySQL Datenbank speichern.
Habe das mit folgenden PHP-Code Veruscht:
(der Name vom File-Formularfeld heißt 'bild', und ein weiteres Text-Feld 'bild_name')
1: 
2: 
3: 
4: 
5: 
6:
$format = substr($_FILES['bild']['type'],6);
$handle = fopen ($_FILES['bild']['tmp_name'], "rb");
$datei = fread($handle, filesize($_FILES['bild']['tmp_name']));
fclose ($handle);
$sql = 'INSERT INTO `bilder` (`name`, `bild`, `format`) VALUES ("'.$bild_name.'", "'.$datei.'", "'.$format.'")';
mysql_query($sql);

Ich habe es auch schon mit
1:
$datei = file_get_contents($_FILES['bild']['tmp_name']);

versucht, leider ohne erfolg.
Wenn ich Test-Weise $datei ausgebe bekomme ich solch Zeichenketten ÒØ\¯”îΪACwØÝûuúU *W
Der Feld-Typ von 'bild' in der DB ist "mediumblob"
Hat jemand ne Idee was ich da noch falsch mache???
Gruß Jan

Diese Nachricht wurde geändert von: jans16
  Profil   Editieren   Zitieren
Rieke
Foren-Team





Beiträge: 1791

Ich kann sowas zwar nicht programmieren, aber ich weis das Bilder als text Datei geöffnet eben auch genau aus sollchen Zeichenketten besteht.

Funktioniert die Ausgabe nicht oder landet gar nichts in der DB ?

Noch bessere Frage... warum zur Hölle damit in die DB .. Bilder in die DB zu packen ist Verschwendung, es bläht eine Datenbank unnötig auf .. je aufgeblähter die DB ist um so mehr Performance geht flöten... in den meißten referenzbüchern wird davon abgeraten und das zu Recht

---

  Profil   E-Mail   Website   Editieren   Zitieren
pizzataxi
Quasselstrippe




Beiträge: 248

Nur mal als Vorschlag:

Du kannst doch die Pfade zu den hochgeladenen Bildern in der Datenbank speichern.
Das hat den Vorteil, dass Du - wie Rieke schon geschrieben hat - die DB nicht unnötig aufblähst und alle Vorteile von Datenbanken ausnutzen kannst.

Du würdest also zeilenweise die Tabelle auslesen und setzt in den Tag dann den Bildpfad aus der DB.

  Profil   E-Mail   Editieren   Zitieren
jans16
Pixelschubser
Threadstarter




Beiträge: 2

DIe Bilder die ich testweise mit phpMyAdmin in die DB hochgeladen habe konnte ich auch einfach mit folgender bild.php (gekürzt) ausgeben:
1: 
2:
header("Content-Type: image/".$dsatz['format']);
echo $dsatz['bild'];

Aber bei dem oben gegannten PHP-Code landet gar nichts in der DB.
Mit außnahme, wenn es sich bei der hochgeladenen Bild-Datei nicht wirklich um ein Bild handelt also eine 0 Byte Datei oder eine Text-Datei die 'nur' *.jpg heißt.
Deshalb muss doch warscheinlich noch eine Umwandlung des Strings stattfinden, bevor er an die DB geschrieben wird.

PS: Aus bestimmten Gründen wollte ich eigendlich schon die Bilder selbst in der DB speichern und nicht nur die Pfade, und das sollte doch eigendlich auch mit PHP realisierbar sein...

  Profil   Editieren   Zitieren
zeTo
Quasselstrippe




Beiträge: 239

ich weiß es zwar nicht, aber ich könnte mir vorstellen, dass es genau so ist, wie beim email mit anhang versenden mit php.
d.h. man muss es erst encode:

base64_encode($file_data)

aber wie gesagt, ich hab keine ahnung, ich hab so was noch nie gemacht...

  Profil   Editieren   Zitieren
raiserle
Mausakrobat




Beiträge: 172

naja, ist bissel viel jetz. hab den code einfach mal rauskopiert.
ich lad die bilder zb auf tripod hoch und benutz nen anderen webserver...
meinen eignen local-webserver...
ich schreiben die daten, die benötigt werden in die mysql...
welcher tripod-acc usw... es funktioniert echt super.
falls ihr irgendwo nicht klar kommt, oder ein modifiziertes script braucht,
einfach nochmal fragen.
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
21: 
22: 
23: 
24: 
25: 
26: 
27: 
28: 
29: 
30: 
31: 
32: 
33: 
34: 
35: 
36: 
37: 
38: 
39: 
40: 
41: 
42: 
43: 
44: 
45: 
46: 
47: 
48: 
49: 
50: 
51: 
52: 
53: 
54: 
55: 
56: 
57: 
58: 
59: 
60: 
61: 
62: 
63: 
64: 
65: 
66: 
67: 
68: 
69: 
70: 
71: 
72: 
73: 
74: 
75: 
76: 
77: 
78: 
79: 
80: 
81: 
82: 
83: 
84: 
85: 
86: 
87: 
88: 
89: 
90: 
91: 
92: 
93: 
94: 
95: 
96: 
97: 
98: 
99: 
100: 
101: 
102: 
103: 
104: 
105: 
106: 
107: 
108: 
109: 
110: 
111: 
112: 
113: 
114: 
115: 
116: 
117: 
118: 
119: 
120: 
121: 
122: 
123: 
124: 
125: 
126: 
127: 
128: 
129: 
130: 
131: 
132: 
133: 
134: 
135: 
136: 
137: 
138: 
139: 
140: 
141: 
142: 
143: 
144: 
145: 
146: 
147: 
148: 
149: 
150: 
151: 
152: 
153: 
154: 
155: 
156: 
157:

 


         Kategorie:
          oder neue Kategorie 
Datei:
URL:
Beschreibung:
"; } if($_POST['save']){ /* echo " "; */ $cat =$_POST['cat']; $catnew =$_POST['catnew']; $url =$_POST['url']; if($_POST['cat']=="" && $_POST['catnew']==""){ echo"Es muss eine Kategorie angegeben werden
"; exit(); } if($catnew!="") $cat=""; $image=getimagesize($_FILES['pic']['tmp_name']); //print_r($image);echo"
"; if(!$image[2]==1 || !$image[2]==2 || !$image[2]==3) { echo"Falsches Format. Nur gif, jpg oder png.
"; exit(); } $name=$_FILES['pic']['name']; $width=$image[0]; $height=$image[1]; ################################################################## ### bild in den tempordner kopieren und mit temp_NAME versehen ### ################################################################## copy($_FILES['pic']['tmp_name'],"temp/temp_".$_FILES['pic']['name']); $filename1="temp/temp_".$_FILES['pic']['name']; echo"Dateigröße=".filesize($filename1)." bytes
"; ########################################################################### #### Thumbnail erzeugen und unter thumb_NAME abspeichrn im ordner temp/ ### ########################################################################### if(thumbnail($_FILES['pic']['tmp_name'],70,'temp',"thumb_".$_FILES['pic']['name'])!=1){ copy($_FILES['pic']['tmp_name'],"temp/thumb_".$_FILES['pic']['name']); } $filename2="temp/thumb_".$_FILES['pic']['name']; $ftp_id=@ftp_connect($server,$port); $login=@ftp_login($ftp_id,$ftpuser,$ftppass); if((!$ftp_id) || (!$login)){ echo "
FTP-Connect faild!
"; } else{ echo "Connected!
"; } if(!@ftp_chdir($ftp_id,$upload)){ //--> in den bilderordner wecheln echo "Directory $upload not found
"; } ############################################# #### Bild wird übermittelt ################## ############################################# if($cat!=""){ ftp_chdir($ftp_id,$cat); //--> in den categoryordner wecheln $category=$cat; }//--> alte category nutzen else{ $category=$_POST['catnew']; ftp_mkdir($ftp_id,$catnew); //--> categoryordner erzeugen ftp_chdir($ftp_id,$catnew); //--> in categoryordner wecheln ftp_mkdir($ftp_id,"thumb"); //--> ordenr in cat-ordner für thumbnails erstellen }//--> neue category anlegen mysql_query("insert into $tab_bilder set name='$name', dest='$url', _describe='$beschreibung', _width='$width', _height='$height', category='$category', _date='$date' ")or die(mysql_error()); $fp1=fopen($filename1,"r"); $fp2=fopen($filename2,"r"); ftp_fput($ftp_id,"$name",$fp1,FTP_BINARY); //--> Orgbild übertragen ftp_chdir($ftp_id,"thumb"); //--> in thumbordner wechseln ftp_fput($ftp_id,"$name",$fp2,FTP_BINARY); //--> Thumbbild übertragen fclose($fp1); fclose($fp2); unlink($filename1); unlink($filename2); if(ftp_close($ftp_id)) echo "Connetion closed
"; echo " "; //echo ""; }//-- ende post[save] ?>


gruß raiserle aka Henrik

---
Irren is Menschlich

Wer andern eine Grube gräbt,
sollte darüber nachdenken,
ob sie tief genug ist!!!!

Kameradschaft ist, wenn der
Kamerad schafft !!!!

  Profil   Editieren   Zitieren
monolit
Feiertags-Poster




Beiträge: 40

Hallo,

ich möchte dir nicht den Tag versauen, kann mich aber den Vorrednern nur anschliessen.
Bildupload macht in der Regel in eine DB wenig Sinn. Die Gründe dafür haben meine Vorredner bereits genannt. Sowas macht nur in ganz speziellen Fällen Sinn.

Wobei ich denke dass so ein Thema wieder ne Diskussion auslösen könnte

Ansonsten:

Bild auf nen FTP laden -> Pfad dann in der MySQL speichert

Das ist wesentlich ressourcenfreundlicher und deine MySQL wirds dir auch danken.

Gruß Stefan

---
This is LINUX land, in silent nights you can hear the Windows machines rebooting.
Günstige MySQL Datenbanken - http://mysqlhosting.de

  Profil   Editieren   Zitieren
subjective
Forenheld




Beiträge: 844

Das laden auf den "FTP" ist auch nur in Sonderfällen sinnvoll. Damit PHP Bilder auf einen FTP-SErver laden kann, müssen sie erstmal per HTTP-Upload auf den Rechner, auf welchem PHP läuft. Wenn dieser mit dem Webseiten-Auslieferer identisch ist, mahct es wenig Sinn die Dateien noch mal über FTP zu senden, da man sie auch direkt in den Zielpfad verschieben kann.

---
Weaverslave

  Profil   Website   Editieren   Zitieren
monolit
Feiertags-Poster




Beiträge: 40

Naja - ich denke wir können uns darauf einigen, dass je nach Nutzen die entsprechede Lösung (DB Store, FTP) praktibal ist. Das muss man eben abwägen. Hat beides seine Vor- und Nachteile.

---
This is LINUX land, in silent nights you can hear the Windows machines rebooting.
Günstige MySQL Datenbanken - http://mysqlhosting.de

  Profil   Editieren   Zitieren
subjective
Forenheld




Beiträge: 844

Drei Varianten

1. HTTP-Upload - Metadaten in die DB
2. HTTP-Upload - Alles in die DB
3. FTP-Upload - Sync in die DB

Der erste Fall ist die "normale" und wohl häufigste Variante. Einfach hochladen in ein bestimmtes Verzeichnis (möglichst außerhalb des Document-Root). Die zweite Variante ist bei verteilten Systemen denkbar, welche auf eine zentrale Datenbank zugreifen. Jedoch sollten die einzelnen Webserver die Bilder dann lokal cachen (im Dateisystem).

Der letzte Fall spielt seinne Vorteil aus, wenn man den Upload nicht mehr nur über den Browser erledigt. FTP ist deutlich schneller und kommt auch mit sehr großen Dateien zurecht. Die Vorteile kommen jedoch nur zum Tragen, wenn man einen speziellen Client nutzt.



---
Weaverslave

  Profil   Website   Editieren   Zitieren
monolit
Feiertags-Poster




Beiträge: 40

Okay wenn du das so unterscheidest, hab ich mich wohl falsch ausgedrückt *g*
Ich meinte in Bezug auf den obigen Post die erste Möglichkeit ;)

---
This is LINUX land, in silent nights you can hear the Windows machines rebooting.
Günstige MySQL Datenbanken - http://mysqlhosting.de

  Profil   Editieren   Zitieren
raiserle
Mausakrobat




Beiträge: 172

@ subjective:

es macht schon sinn bei mir...

die normale ist wohl schon, wie du sagst.... nur hatte ich glaub schon dazu gesagt,
oder nicht?, das meicn webserver hier local bei mir steht.
damit die bilder nicht so viel traffic bei mir verursachen, lade ich sie per ftp zu lycos hoch
und setze den pfad zum bild in der sql ein....

---
Irren is Menschlich

Wer andern eine Grube gräbt,
sollte darüber nachdenken,
ob sie tief genug ist!!!!

Kameradschaft ist, wenn der
Kamerad schafft !!!!

  Profil   Editieren   Zitieren
raiserle
Mausakrobat




Beiträge: 172

achso, vergessen...
bei anderen scripten von mir, wird natürlich nur http(php) benutzt,
um bilder hochzuladen...
wie bei dem mit ftp, wird der pfad dann wieder in der mysql hinterlegt....

hätte vielleicht nen anderes script raussuchen sollen, um das hier nicht
unnötig zu komplizieren. das war aber gleich das erste, was ich in die finger bekommen
habe.

---
Irren is Menschlich

Wer andern eine Grube gräbt,
sollte darüber nachdenken,
ob sie tief genug ist!!!!

Kameradschaft ist, wenn der
Kamerad schafft !!!!

  Profil   Editieren   Zitieren
subjective
Forenheld




Beiträge: 844

Ich hatte das ja schon darauf eingeschränkt, das Upload- und Seitenserver identisch wären.

Du hast natürlich recht. Bei einem solchen verteilten System, wie du es beschreibst, macht es sehr viel Sinn den zweiten Teil der Strecke FTP zu nutzen.

---
Weaverslave

Diese Nachricht wurde geändert von: subjective
  Profil   Website   Editieren   Zitieren
DJOtti
Pixelschubser




Beiträge: 2

Hallo,
kann mir auch jemand helfen, bin nicht so das Programmiergenie. Versuche mit diesem Code die Datei auf einen Server zu laden und gleichzeitig den Datei-Namen (strFileName) und die Beschreibung (bildername) in eine DB-Tabelle (newsbilder) zu schreiben. Aber irgendwie bekomme ich hiermit nur den Upload hin, er schreib mir nichts in die DB.

Wäre nett, wenn mir irgendeiner helfen könnte.

Gruss
Frank


1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
21: 
22: 
23: 
24: 
25: 
26: 
27: 
28: 
29: 
30: 
31: 
32: 
33: 
34: 
35: 
36: 
37: 
38: 
39: 
40: 
41: 
42: 
43: 
44: 
45: 
46: 
47: 
48: 
49: 
50: 
51: 
52: 
53: 
54: 
55: 
56: 
57: 
58: 
59: 
60: 
61: 
62: 
63: 
64: 
65: 
66: 
67: 
68:

 

Es muss mindestens der Name eingetragen werden !!!

zurück

"); exit(); } else { $numsendfiles = count($HTTP_POST_FILES); foreach($HTTP_POST_FILES as $strFieldName => $arrPostFiles){ if ($arrPostFiles['size'] > $b_min && $arrPostFiles['size'] < $b_max){ $strFileName = $arrPostFiles['name']; $strFileTemp = $arrPostFiles['tmp_name']; @copy ($strFileTemp, "$pfad/$strFileName"); echo "
Datei $strFileName erfolgreich hochgeladen.
"; $bildername = strip_tags($bildername); $strFileName = strip_tags($strFileName); $bildername = str_replace('"', "'", $bildername); $strFileName = str_replace('"', "'", $strFileName); // $sql = "insert into (bildername,strFileName) VALUES( '$bildername', '$strFileName')"; $sql = "insert into newsbilder set bildername = '$bildername', strFileName = '$strFileName'"; }else{ echo "
Die Datei muß größer als $b_min Bytes und kleiner als $mb MB sein!
";} } } // if } // if (isset($sendfiles)) ?>
Die Datei darf nicht größer als MB sein.


"; echo "$numfiles "; echo $numfiles == '1' ? 'Datei kann' : 'Dateien können'; echo ' hochgeladen werden.

'; for ($i=1; $i<=$numfiles; $i++){ echo "
\n";} echo '


'; ?>


  Profil   Editieren   Zitieren
Seite 1 | 2  

Antworten
Forum » PHP & MySQL » Binär-Daten von Upload in DB speichern

Aktuelle Beiträge zur Hilfe im Forum für Homepage - Binär-Daten von Upload in DB speichern im Forum Homepage Hosting AntwortenLetztes Posting
Best online slots
in "PHP & MySQL"
0 23.01.2023 22:40 von Sevetr
Rangliste (Ohne Mysql) (Kompliziertes Ordner System)
in "PHP & MySQL"
3 19.07.2021 06:00 von newtopblog
kleines problem mit phpadmin
in "PHP & MySQL"
5 11.04.2021 22:22 von Zavylon
Counter mit PHP
in "PHP & MySQL"
4 22.03.2021 16:29 von Robeni
Fehlermeldung beim Importieren der Datenbank in phpmyadmin
in "PHP & MySQL"
0 02.08.2019 22:14 von iFuchs
CMS für Online Shop
in "PHP & MySQL"
18 26.05.2019 13:29 von raiserle
Regestrierungproblem
in "PHP & MySQL"
3 28.11.2018 13:20 von norbertofahey
PHP Datum ausgeben?
in "PHP & MySQL"
1 19.10.2018 10:04 von Klaus1973
PHP befehl ausführen
in "PHP & MySQL"
11 16.08.2018 09:08 von Klaus1973
Visual Composer selber programmieren?
in "PHP & MySQL"
0 22.01.2017 23:45 von Redji
php preg_replace_callback für dynamischen Link
in "PHP & MySQL"
0 05.07.2016 11:02 von Rm21
PHP Code verschlüsseln
in "PHP & MySQL"
20 21.02.2016 21:25 von Kilian1
migrierter WP-Blog läuft nicht ...
in "PHP & MySQL"
0 04.02.2016 02:01 von Oxygon



Besucher : 7975142    Heute : 93     Gestern : 388     Online : 44     29.3.2024    7:20      0 Besucher in den letzten 60 Sekunden        
Nach oben