Stocați fișiere în câmpuri BLOB cu PHP și MySQL

Cuprins

Când creăm un software sau un site web care folosește fișiere, trebuie să decidem cum să le stocăm, una dintre posibilități este crearea unui folder și stocarea fișierelor acolo și o altă posibilitate este stocarea lor în baza de date, trebuie să avem în vedere că un câmp longblob poate stoca până la 4 gigaocteți.

Motorul bazei de date mySQL vă permite să utilizați câmpuri de bloc care stochează informații în format binar. Acest format vă permite să stocați diferite tipuri de fișiere, cum ar fi Word, Excel, orice tip de imagini, fișiere pdf etc. În acest tutorial vom vedea cum se stochează fișiere într-un tabel de baze de date MySQL, datele vor fi trimise dintr-un formular html și procesate cu PHP pentru a salva fișierele în baza de date.

Pentru a realiza exemplele tutorialului, vom avea nevoie de un server la distanță sau unul local care poate fi instalat așa cum am văzut în tutorial:

  • Cum se instalează Xampp pentru a vă transforma computerul într-un server web, în ​​acest fel vom avea suport pentru php și mysql și toate bibliotecile necesare.

În continuare vom crea baza de date care va stoca datele vehiculului, cu fișă tehnică foto și pdf, pentru aceasta vom crea phpmyadmin exemplul de numit dealer. În continuare vom crea masa masinilor.

 CREAȚI dealerul BAZEI DE DATE; Structura tabelului pentru tabelul „autos` CREATE TABLE` autos` („ id` int (11) NOT NULL, „mark` varchar (150) DEFAULT '0',„ model` varchar (150) DEFAULT '0', `photo` longblob) MOTOR = InnoDB DEFAULT CHARSET = latin1; Indici ai tabelului `autos` ALTER TABLE` autos` ADAUGĂ CHEIE PRIMARĂ („ id ”); AUTO_INCREMENT al tabelelor aruncate AUTO_INCREMENT al tabelului `autos` ALTER TABLE` autos` MODIFY` id` int (11) NOT NULL AUTO_INCREMENT;
Cod de creare tabel

Creăm pagini și formulare PHP pentru înregistrarea datelor
Apoi vom crea un fișier config.php de unde ne vom conecta la baza de date:

 
Config.php

În continuare vom crea o pagină în PHP care va fi însărcinată cu listarea tuturor înregistrărilor din tabelul de autovehicule.

 <? aruncat "
"; aruncat "
"; aruncat ""; aruncat ""; aruncat ""; aruncat ""; aruncat "

"; $ result = mysql_query (" SELECT * FROM `autos`") sau trigger_error (mysql_error ()); while ($ rânduri = mysql_fetch_array ($ result)) {foreach ($ rânduri AS $ cheie => $ valoare) {$ rânduri [$ cheie] = stripslashes (valoare $);} ecou "
"; aruncat ""; aruncat ""; aruncat ""; aruncat " "; aruncat "

"; } aruncat "
MarcaModelFotografieAcțiuni
". $ rânduri ['marca']."". $ rânduri ['model']." Vizualizare fotografieEditați | × Elimina
"; ecou" Mașină nouă ";?> var13 ->
Enumerați toate înregistrările din tabel

Formularul de înregistrare a datelor care ne permite să înregistrăm o fotografie, pentru aceasta trebuie să folosim elemente de fișier care ne permit să selectăm un fișier din browser și apoi să îl procesăm cu PHP și să salvăm datele în câmpurile blob din tabelul nostru de autovehicule din baza de date.

Crearea web-ului pe serverul nostru
Creăm webul într-un folder numit concesionar pe serverul nostru. Pagina web va conține codul HTML și PHP, sub forma trebuie să folosim atributul enctype = "multipart / formular-date" care indică faptul că fișierele pot fi trimise prin formular, dacă nu are atributul, fișierele nu pot fi trimise.

Această pagină va fi numită high.php

Codul este următorul:

 $ valoare) {$ _POST [$ cheie] = mysql_real_escape_string ($ valoare); } // citim date din fotografia $ photo = $ _FILES ["photo"] ["tmp_name"]; $ photoname = $ _FILES ["foto"] ["nume"]; // acesta este fișierul pe care îl vom adăuga în câmpul blob $ foto = $ _FILES ['foto'] ['tmp_name']; // îl convertim în binar înainte de al salva $ photo = mysql_real_escape_string (file_get_contents ($ _ FILES ["photo"] ["tmp_name"])); $ sql = "INSERT INTO` cars "(` make`, `model`,` photo`) VALORI ('{$ _POST [' make ']}', '{$ _POST [' model ']}', '$ Foto ') "; mysql_query ($ sql) sau die (mysql_error ()); header ('Locație: Listautos.php'); }?> var13 ->

Marca:

Model:

Fotografie:

Apoi va trebui să-l arătăm pentru el, vom crea o pagină care interpretează fișierul binar și îl arată, vom crea pagina verfoto.php și vom indica ID-ul fotografiei de afișat.
 document fara titlu

De asemenea, putem extrage atributele fișierului dacă avem nevoie de el în felul următor:

 
Fișierul este stocat temporar în memorie în timpul procesului, dacă apare o eroare, datele pot fi pierdute sau nu sunt înregistrate complet, scriptul PHP elimină fișierul temporar din memorie după ce procesul este terminat, chiar dacă nu se termină corect.

Apoi vom crea pagina pentru a edita datele unei mașini, pe care o vom numi edit.php

 $ valoare) {$ _POST [$ cheie] = mysql_real_escape_string ($ valoare); } // citim date din fotografia $ photo = $ _FILES ["photo"] ["tmp_name"]; $ photoname = $ _FILES ["foto"] ["nume"]; // acesta este fișierul temporar $ photo = $ _FILES ['photo'] ['tmp_name']; // citiți fișierul temporar în binar $ photo = mysql_real_escape_string (file_get_contents ($ _ FILES ["photo"] ["tmp_name"])); $ sql = "UPDATE` cars` SET` brand` = '{$ _POST [' brand ']}', `model` = '{$ _POST [' model ']}',` photo` = '$ photo' WHERE `id` = '$ id'"; mysql_query ($ sql) sau die (mysql_error ()); header ('Locație: Listautos.php'); } $ rânduri = mysql_fetch_array (mysql_query ("SELECT * FROM` autos` WHERE `id` = '$ id'")); ?> var13 ->

Marca:

Model:

Model:

Fotografie:

>

Trebuie să avem în vedere că, dacă ștergem o înregistrare, vom șterge fișierele în același timp și nu pot fi recuperate. Pentru a șterge o înregistrare vom crea pagina șterge.php și vom folosi următorul cod.
 
Am realizat un cod simplu, fără prea mult design, pentru a explica modul de stocare a fișierelor în câmpurile blob, unul dintre dezavantaje este că dimensiunea bazei de date crește foarte mult atunci când stocăm fișiere în format binar.
Unul dintre avantaje este că fișierele sunt salvate într-un tabel, ceea ce este mai bun din motive de securitate, deoarece fișierele pot fi accesate numai dacă aveți permisiunile de gestionare a bazei de date și nu există un folder fizic din care să descărcați fișierele. sau să le manipuleze de către un atacator.

V-a plăcut și ați ajutat acest tutorial?Puteți recompensa autorul apăsând acest buton pentru a-i oferi un punct pozitiv

Vei ajuta la dezvoltarea site-ului, partajarea pagina cu prietenii

wave wave wave wave wave