Cum se păstrează imaginile în mysql, mysql

Bună ziua.
A făcut ceva de genul ăsta pentru verificare:
$ filename = "144.JPG";
$ handle = fopen (numele fișierului $, "r");
$ contents = fread ($ handle, file size (nume fișier $;






antet ("Tip de conținut: imagine / jpeg");
echo "$ content";
fclose ($ mâner);
Rezultă doar textul, deși m-am gândit că va afișa imaginea. Dragă vă rog să-mi spuneți cum de pe php pentru a păstra imaginea în sine în baza de date pe mysql, și apoi ieșire?
Mulțumesc

Este inutil să stocați imagini într-o bază de date

Sunt de acord cu ise-dvp, dar încă răspund.

Citiți fișierul
$ fname = "ban.jpg";
$ f = fopen ($ fname, "r");
$ fc = fread ($ f, dimensiune fisier ($ fname .;
fclose ($ f);

pentru a vă conecta la baza de date
$ conn = mysql_connect ("localhost", "rădăcină", ​​"regele stătea pe oală");
mysql_select_db ("baza");
introduceți o intrare cu o imagine
$ sql = "INSERTAȚI ÎN tabela VALUES (NULL," "Addslashes ($ fc)." ') ";
$ rezultat = mysql_query ($ sql);
mysql_free_result ($ rezultat);
citiți o intrare cu o imagine
$ sql = "SELECTARE DE LA ORDINUL TABELULUI DE ID DESC LIMIT 1";
$ rezultat = mysql_query ($ sql);
$ row = mysql_fetch_assoc ($ rezultat);
$ pic = $ rând ["pic"];
mysql_free_result ($ rezultat);
afișați-l în browser
ob_end_clean ();
antet ("Content-Type: image / jpg");
echo $ pic;
doar în cazul în care structura tabelului
CREATE TABLE "tabla" (
'id' int (11) NU NULL auto_increment,
'pic' blob,
TASTĂ PRIMARĂ ('id')
) MOTOR = MyISAM DEFAULT CHARSET = cp1251;

dacă imprimă tot același text - trebuie să vedem ce se întâmplă cu serverul web. Cel mai probabil, heders au fost deja trimise, sau concluzia a fost început.






1) eliminați citatele din ecou. Poate, atunci interpretul percepe datele ca text. Dar nu avem text, ci date binare. Și sub consultarea anterioară - asigurați-vă că până la momentul anteturilor și a rezultatelor conținutului nu există altă concluzie. Și pentru acest caz există o astfel de fpassthru
2) Cred că de mult timp a trebuit să stochez imagini în baza de date. Soluția cu addslashes nu este exact gud, se poate întâmpla astfel încât, dacă uitați să codificați date binare atunci când exportați și importați, imaginile vor fi pierdute. Dacă într-adevăr nu vă pasă de resursele de server (și nu puteți stoca binare în e-budgeting), este mai bine să luați base64_encode inventat cu mulți ani în urmă

Două plusuri la ultimul răspuns sunt bine demonstrate de nivelul vizitatorilor locali.

Și autorul, cel mai probabil, este necesar să învețe HTML.
Din moment ce acele "titluri" care sunt menționate mai sus - acesta este, probabil, normal HTML, în care eroul nostru avea de gând să afișeze imagini.

- ați amestecat împreună și stocate în baza de date și de ieșire imagini într-o singură întrebare mare. Luați cartea lui Dmitry Koterov PHP4 (sau PHP5), există un exemplu ca răspuns la întrebarea dvs.
- dar ar trebui să păstreze fără ambiguitate imagini în baza de date nu ar trebui să fie
- în baza de date stochează de obicei legături, ci mai degrabă doar numele de imagini (legături care se formează mai târziu)
- dar este mai bine să nu păstrați nimic în baza de date despre imagini. Formarea numelor fișierelor imagine în conformitate cu orice câmp pe care este recunoscută această înregistrare.

O altă întrebare pe această temă.
Dacă nu doriți să stocați imagini în baza de date, cum faceți acest lucru atunci când adăugați informații în baza de date, apoi transmiteți informațiile către browser și afișați imaginea corectă pentru aceste informații? De exemplu, ieșiți din știri și combinați-le cu imaginea textului. Adăugarea de informații se face prin panoul de administrare.

Și cum să obțineți un obiect sau un link spre el pentru descărcare, dacă nu este o imagine, ci orice alt fișier? De exemplu, doc, pdf, mp3?

Mm. Într-o bază de date, nu ar trebui să stocați o mulțime de date, este mai bine să le stocați pe server.
Dar există opțiuni când este necesar. De exemplu - angajații DB ai întreprinderii. Fotografiile se mențin mici, iar portabilitatea bazei de date crește.







Articole similare

Trimiteți-le prietenilor: