Hi!
Ich würde gerne aus einem Formular heraus einen Bilderupload zulassen. Nun kam ich auf die idee via BLOB bilder in die DB zu speichern, was aber anscheinend nicht sonderlich toll ist.
Kommt drauf an. Man kann auch Vorteile daraus ziehen, je nachdem welche der Eigenschaften man wie wertet.
Beispiel Script von php.net:
Das ist nur sehr rudimentär, da fehlt so einiges. Als erstes sollte man feststellen, ob beim Upload Fehler aufgetreten sind, was man durch Sicherstellen seiner Existenz und anschließendem Befragen des Wertes von $_FILES[...]['error'] in Erfahrung bringen kann. Ansonsten kann man sich ja das Fortfahren sparen.
$uploaddir -> wie wird diese genau definiert? Bzw wenn ich ein Ordner, am selben ort mache wie das script laufen soll, kann ich dann einfach "ordner/" eintragen?
Kann, ja, ob das sinnvoll ist, muss noch geklärt werden.
mit dem move_uploaded_file wird das bild aus dem tmp verzeichnis in meinen ordner hinein verschoben, kann ich also vorher noch einige bedingungen setzen, zB solche ergänzungen:
Ja, nicht nur "kann", sondern auch "sollte". Die Größe ist nur ein relativ nebensächliches Kriterium. Viel wichtiger ist, dass man dir auch Scripts und ähnliches Zeug hochladen kann. Wenn das im Upload-Verzeichnis landet und man das wunderbar wieder abrufen kann, nebst der Ausführung von darin enthaltenem Code, dann war das mal dein Server. Gegenmaßnahmen wären, die Ausführung von Scripten in dem Verzeichnis verhindern. Bedenke, dass neben PHP auch noch andere Dinge aktiviert sein können. Prüfen oder explizites Setzen einer Dateiendung, die den Webserver nicht zum Interpretieren des Inhalts veranlasst, sowie Prüfen des Dateiinhaltes. Bei den üglichen Grafikformaten sollte getimagesize() ein gültiges Ergebnis liefern. Letzteres allein reicht aber nicht, denn man kann auch in gültig aussehenden Grafikdateien Programmcode unterbringen, der dann doch wegen einer durchgelassenen Dateiendung ausgeführt wird.
Bezüglich der URL, wo bekomme ich die her? Ich will ja in eine DB eine Id den Namen und die url speichern. Aber wo bekomme ich die url eig. her?
Die ergibt sich genau wie bei deinem Script durch den Ablageort im Dateisystem, falls nicht irgendwelche Umschreibereien (mod_rewrite) stattfinden.
Die Inserts in die DB kämen dementsprechend auch ins obige else oder? Denn der move_uploaded_file befehl wird ja nur ausgeführt fals keine errors auftreten.
Oder. Nur wenn kein Fehler auftrat will man den Upload in der Datenhaltung verewigen. Aber durch die anderen Prüfungen wird das dann doch noch etwas umfangreicher als nur ein einfaches if-else.
Lo!