Autor Zpráva
Toredor
Profil *
Dobrý den,
mohl by mi někdo napsat kód na převod obrázku na text který se potom dá uložit do databáze? Našel jsem nějaké částečné řešení, které se mi nepodařilo rozchodit.
Děkuji za jakoukoli pomoc.
Joker
Profil
Toredor:
Žádný není potřeba. V databázi to dejte jako typ BLOB a vložte tam data obrázku.
Toredor
Profil *
A nemáte po ruce nějaký kód který toto dělá? Děkuji
peta
Profil
CREATE TABLE `soubory`
(
   `id` SMALLINT UNSIGNED,
   `name` VARCHAR(40),
   `data` BLOB
);

INSERT INTO `soubory` (`data`) values ('data here');

data here = mysql_real_escape_string(file('http://www.example.com/obrazek.jpg'));

---
Dokonce koukam, ze se da tahat primo soubor pres sql
http://stackoverflow.com/questions/10729824/how-to-insert-blob-and-clob-files-in-mysql
INSERT INTO table1 VALUES(1, LOAD_FILE(data.png));
A tez koukam, ze je nutne pouzit konverzi do base64 kvuli sql dotazu, ze mozna nestaci to osetrit mysql_real_escape_string.
INSERT INTO table1 VALUES 
  (1, x'89504E470D0A1A0A0000000D494844520000001000000010080200000090916836000000017352474200AECE1CE90000000467414D410000B18F0BFC6105000000097048597300000EC300000EC301C76FA8640000001E49444154384F6350DAE843126220493550F1A80662426C349406472801006AC91F1040F796BD0000000049454E44AE426082');
Enko
Profil *
Toredor:
kód na převod obrázku na text který se potom dá uložit do databáze
Proč toto potřebuješ? Zbytečně tím zatěžuješ databázi a vytváříš mnoho práce zbytečně navíc. Není lepší uložit data do složky webu a do databáze uložit jen jméno obrázku, případně další věci, které potřebujete zachovat zvlášť?
juriad
Profil
Enko:
To jistě platí u amatérských databázi typu mysql či sqlite. Oracle se chvástá, že jejich SecureFiles jsou výhodnější: http://www.oracle.com/technetwork/database/sf-faq-082597.html#A150.
Jelikož se tazatel neptá na konkrétní databázi, odpovědi jsou obecné. Na druhou stranu, pochybuje snad někdo, že myslel mysql?
Alphard
Profil
Tak přímo amáterskou bych MySQL nenazýval :-)
To co odkazujete u Oraclu může být někdy určitě výhodné, ale mám-li předpokládat webové prostředí, moc se mi to v praxi použitelné nezdá. Nemohu obrázky nacpat přímo do html stránky (resp. teoreticky mohu, ale nebudou se cachovat, takže to není moc rozumné), stejně na ně musím odkázat a budou se samostatně načítat. Takže 2 kroky zůstanou, jen se místo prostého poslání souboru zapojejí ještě PHP(?) a databáze.
Takže záleží na konkrétním použití.
Enko
Profil *
Alphard:
Takže záleží na konkrétním použití.
Určitě, ale obecně platí že ukládat obrázky do BLOB není vhodné. Jinak se vším co píšeš, se ztotožňuji.

juriad:
To jistě platí u amatérských databázi typu mysql
Sice je to trochu OT, ale včem se podle tebe liší profesionální a amatérská databáze? Zajímá mě ten rozdíl. Rozhodně si nemyslím, že MySQL je amatérská. To by jí pak nepoužíval takovy gigant jako je například Facebook, aj. http://www.mysql.com/customers/view/?id=757
juriad
Profil
Ok, uznávám, že nazváním mysql amtérská jsem zbouřil vody. Také jsem docela ujel zaměřením své odpovědi, Alphard má pravdu, pro web řešený pomocí PHP to většinou není užitečné, a o tom se zde primárně bavíme.

Alphard:
Proč si nenapsat C-čkovou službu, která bude obsluhovat jen obrázky a hlavičky cachování. A bude využívat jen databázové prostředky k získání souborů a ověření, zda uživatel má k souboru přístup. Klasický přístup přes filesystém začne selhávat, pokud bude v jednom adresáři miliony a víc souborů, pak procházení adresáře je lineární, a tedy pomalé.

Enko:
Zkus si porovnat možnosti replikace, migrace, zálohování, rozložení výkonu na víc serverů, rozložení tabulek na víc disků, optimalizace dotazů a prováděcích plánů, ono transparentní rozhraní k filesystému, větší velikost (~TB) tabulek, komerční podpora, rozšíření databáze pro uložení a dotazování XML.
Ano, těch drobností je celá řada a většinu nikdy nepotřebuješ, dokud je skutečně nezačneš potřebovat, ale od toho je analytik, aby zjistil potřeby té které aplikace.

Jedno z větších nasazení Oracle DB:
https://openlab-mu-internal.web.cern.ch/openlab-mu-internal/03_Documents/4_Presentations/Slides/2011-list/Eric_Grancher_20110803_openlab-OracleAtCERN-03.pdf
Ale nebudeme si tady přece poměřovat pindíky, jako malí kluci. Každé řešení je na něco vhodné, vždy lze najít úlohu, kde neobvyklé řešení překoná to běžně používané.
Lamicz
Profil
juriad:
Já bych to zase s tím Oraclem nepřeháněl, kdyby byl tak super, tak by se vývojáři MySQL netrhli a nezačali dělat MariaDB. Ono mám dojem, že právě po akvizici MySQL Oraclem se tam nic moc neděje...
peta
Profil
juriad: Kdyby byl mysql amatersky a nedobry, tak by ho nedavno oracle nekoupil :)
juriad
Profil
peta:
Oracle nekoupil MySQL, ale koupil společnost Sun Microsystems, která vyvíjela databázi MySQL. Mimo jiné měla i svoji vlastní procesorovou architekturu, operační systém Solaris, vyvinula Javu, kancelářský balík OpenOffice, virtualizační platformu VirtualBox.
Oracle jako firma po koupi Sunu samozřejmě si vzala to, co se jí hodilo a zbytek "zahodila". Vlastní databázový systém už měla, takže jí na vývoji MySQL (ze které nejdou žádné peníze) nezáleží. Oracle vlastně koupil nepřímou konkurenci (Oracle DB a MySQL si nekonkurují, mají úplně odlišné zákazníky) a teď ji dusí. Z toho důvodu došlo k jejímu forku původním vývojářem a vznikla MariaDB, která je binárně kompatibilní a čile se vyvíjí. Tady s Lamiczkem souhlasím.

Oracle je dost rozporuplná firma, stačí na webu chvíli hledat a snad každý musí dojít k tomuto názoru. Nicméně stojím si za tím, že jejich databázový systém je jedním z nejlepším a možnosti MySQL mu sahají jen po kotníky.

Abychom se zde nebavili jen o Oraclu, zmíním, že podobné možnosti Oraclímu SecureFiles má i Microsoftí SQL Server: nazývají to FILESTREAM.

Omlouvám se za off topic, toto se už opravdu Toredorovi otázky netýká.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: