Bilder beim Upload checken
am 20.07.2006 23:54:29 von Jochen Wilberding
Hi zusammen,
ich muß per Programm eine Menge Bilder (100-200) mit jeweils ca. 50-80 KB
hochladen. Dabei kann es vorkommen, dass am Tag 1 ca. 50 Bilder auf dem
Server gespeichert werden, am Tag 2 weitere 50 (und zusätzlich einige der
vorhandenen Bilder geändert werden), am Tag 3 ...
und am x. Tag (bis zu 3 Wochen) alle Bilder.
Dabei besteht dann das Problem, das ich checken möchte, welche Bilder
bereits auf dem Server liegen und welche lokal neu oder geändert worden sind.
Dabei habe ich mir folgendes Szenario vorgestellt:
i) Die Daten werden in die (sowieso) programmatisch befüllte Tabelle
eingestellt.
ii) In die Tabelle "bilder" wird neben dem Dateinamen auch der (lokal
ermittelte) MD5-Hashwert der Bilddatei gespeichert.
also:
Bild: bilder/20-3.jpg
Hash: 6145749C4CEB789EF81DD0F001F7D8C8
Dann rufe ich eine MySQL-View ab via
SELECT Bild, Hash, MD5(LOAD_FILE(CONCAT('wwwroot/vrz/', bild)))
FROM Bilder
und kann mir die Bilder raussuchen, wo der lokale Hashwert vom Server-Hash
abweicht.
Soweit, sogut, aber leider funktioniert LOAD_FILE() bei mir auf dem Server
scheinbar nicht.
Ein alternativer Weg wäre z.B. der lokale Aufruf einer php-Seite, die die
Daten in die Tabelle schreibt, oder ein php-Script, welches mir die Daten
per html zurückliefert.
Aber diese beiden Möglichkeiten scheinen mir doch arg am Ziel vorbei. Oder
was mein ihr dazu? Wie wäre der Upload am besten zu realisieren, ohne
jedesmal alle Dateien hochzuladen?
X-post und F'Up2 d.c.d.mysql
(evtl. F'Up anpassen)
bis die tage
jochen
--
PS: bitte melden Sie sich, wenn Sie diese Nachricht NICHT erhalten haben!
Re: Bilder beim Upload checken
am 21.07.2006 07:25:13 von Manfred Bauer
Jochen Wilberding schrieb:
> Aber diese beiden Möglichkeiten scheinen mir doch arg am Ziel vorbei.
> Oder was mein ihr dazu? Wie wäre der Upload am besten zu realisieren,
> ohne jedesmal alle Dateien hochzuladen?
Mit rsync. Das synchronisiert dir Verzeichnisbäume so sparsam wie
möglich. gibt es (cygwin) auch für windows, und für unix/linux sowieso.
W
Re: Bilder beim Upload checken
am 21.07.2006 10:10:25 von Detlef Sax
On Thu, 20 Jul 2006 23:54:29 +0200, Jochen Wilberding wrote:
[...]
> Aber diese beiden Möglichkeiten scheinen mir doch arg am Ziel vorbei. Oder
> was mein ihr dazu? Wie wäre der Upload am besten zu realisieren, ohne
> jedesmal alle Dateien hochzuladen?
Sitecopy gibt es auch für Windows:
http://www.lyra.org/sitecopy/
Sitecopy synchronisiert lokale Verzeichnis mit deinem Webspace,
merkt sich was schon "oben" ist und löscht wieder was du lokal
löschst. Kann noch ein bißchen mehr. Bequemer geht es nicht.
[...]
Dafür brauche ich keine Datenbank.
Detlef
--
Re: Bilder beim Upload checken
am 22.07.2006 02:11:51 von Frank Schenk
Jochen Wilberding schrieb:
> Hi zusammen,
>
> ich muß per Programm eine Menge Bilder (100-200) mit jeweils ca. 50-80
> KB hochladen. Dabei kann es vorkommen, dass am Tag 1 ca. 50 Bilder auf
> dem Server gespeichert werden, am Tag 2 weitere 50 (und zusätzlich
> einige der vorhandenen Bilder geändert werden), am Tag 3 ...
> und am x. Tag (bis zu 3 Wochen) alle Bilder.
> Dabei besteht dann das Problem, das ich checken möchte, welche Bilder
> bereits auf dem Server liegen und welche lokal neu oder geändert worden
> sind.
16.3. Ist es sinnvoll, Bilder in einer Datenbank abzulegen?
http://www.php-faq.de/q/q-db-blob.html
> Dabei habe ich mir folgendes Szenario vorgestellt:
> i) Die Daten werden in die (sowieso) programmatisch befüllte Tabelle
> eingestellt.
> ii) In die Tabelle "bilder" wird neben dem Dateinamen auch der (lokal
> ermittelte) MD5-Hashwert der Bilddatei gespeichert.
> also:
Was meinst du mit "lokal ermittelt"?
> Dann rufe ich eine MySQL-View ab via
> SELECT Bild, Hash, MD5(LOAD_FILE(CONCAT('wwwroot/vrz/', bild)))
> FROM Bilder
> und kann mir die Bilder raussuchen, wo der lokale Hashwert vom
> Server-Hash abweicht.
> Soweit, sogut, aber leider funktioniert LOAD_FILE() bei mir auf dem
> Server scheinbar nicht.
Die Doku dazu konsultiert?
http://dev.mysql.com/doc/refman/4.1/en/string-functions.html
LOAD_FILE(file_name)
Reads the file and returns the file contents as a string. To use this
function, the file must be located on the server host, you must specify
the full pathname to the file, and you must have the FILE privilege. The
file must be readable by all and its size less than max_allowed_packet
bytes.
If the file does not exist or cannot be read because one of the
preceding conditions is not satisfied, the function returns NULL.
mysql> UPDATE t
SET blob_col=LOAD_FILE('/tmp/picture')
WHERE id=1;
Before MySQL 3.23, you must read the file inside your application and
create an INSERT statement to update the database with the file
contents. If you are using the MySQL++ library, one way to do this can
be found in the MySQL++ manual, available at
http://tangentsoft.net/mysql++/doc/.
Abgesehen davon, daß ich es nicht für sinnvoll erachte, Bilder in eine
Datenbank zu schieben (Webserver haben diverse, eingebaute, Mechanismen,
um Bilder auszuliefern, DBMS nicht) klingt der Rest plausibel. Nun liest
du dir noch die Doku zu LOAD_FILE durch, prüfst die Dateirechte etc. und
dann schaun wir weiter.
Frank