Saglabājiet failus BLOB laukos, izmantojot PHP un MySQL

Satura rādītājs

Kad mēs izveidojam programmatūru vai vietni, kurā tiek izmantoti faili, mums ir jāizlemj, kā tos uzglabāt, viena no iespējām ir izveidot mapi un saglabāt failus tur, un vēl viena iespēja ir saglabāt tos datu bāzē, mums ir jāpatur prātā ka lauks garas asinis tas var uzglabāt līdz 4 gigabaitiem.

MySQL datu bāzes dzinējs ļauj izmantot bloku laukus, kuros informācija tiek glabāta binārā formātā. Šis formāts ļauj saglabāt dažāda veida failus, piemēram, Word, Excel, jebkura veida attēlus, pdf failus utt. Šajā apmācībā mēs redzēsim kā saglabāt failus MySQL datu bāzes tabulā, dati tiks nosūtīti no html veidlapas un apstrādāti ar PHP, lai saglabātu failus datu bāzē.

Lai veiktu apmācības piemērus, mums būs nepieciešams attālais serveris vai vietējais, kuru var instalēt, kā redzējām apmācībā:

  • Kā instalēt Xampp, lai jūsu dators kļūtu par tīmekļa serveri, tādā veidā mums būs atbalsts php un mysql, kā arī visas nepieciešamās bibliotēkas.

Tālāk mēs izveidosim datu bāzi, kurā tiks glabāti transportlīdzekļa dati, ar fotoattēlu un pdf tehnisko lapu, lai to izveidotu phpmyadmin piemēru, ko nosaukt par dīleri. Tālāk mēs izveidosim automašīnu tabulu.

 CREATE DATABASE izplatītājs; Tabulas struktūra tabulai "autos" CREATE TABLE "autos" ("id" int (11) NOT NULL, "mark" varchar (150) DEFAULT "0", "model" varchar (150) DEFAULT '0', "photo" longblob) DZINĒJS = InnoDB DEFAULT CHARSET = latīņu1; Tabulas indeksi `autos` ALTER TABLE` autos` ADD PRIMARY KEY (` id`); AUTO_INCREMENT no dempinga tabulām AUTO_INCREMENT no "autos" tabulas ALTER TABLE` autos` MODIFY `id` int (11) NOT NULL AUTO_INCREMENT;
Tabulas izveides kods

Mēs izveidojam PHP lapas un veidlapu datu reģistrēšanai
Tad mēs izveidosim failu config.php no kurienes mēs izveidosim savienojumu ar datu bāzi:

 
Config.php

Tālāk mēs izveidosim lapu PHP, kas būs atbildīga par visu autos tabulas ierakstu uzskaitīšanu.

 <? izmest ārā "
"; izmest ārā "
"; izmest ārā ""; izmest ārā ""; izmest ārā ""; izmest ārā ""; izmest ārā "

"; $ result = mysql_query (" SELECT * FROM `autos`") vai trigger_error (mysql_error ()); while ($ rows = mysql_fetch_array ($ result)) {foreach ($ rows AS $ key => $ value) {$ rindas [$ key] = stripslashes ($ value);} echo "
"; izmest ārā ""; izmest ārā ""; izmest ārā ""; izmest ārā " "; izmest ārā "

"; } izmest ārā "
ZīmolsModelisFotoDarbības
". $ rindas [" zīme "]."". $ rindas ['modelis']." Skatīt fotoattēluRediģēt Noņemt
"; atbalss" Jauna automašīna ";?> var13 ->
Tabulā uzskaitiet visus ierakstus

Datu reģistrēšanas veidlapa, kas ļauj reģistrēt fotoattēlu, tāpēc mums ir jāizmanto faila elementi, kas ļauj mums izvēlēties failu no pārlūkprogrammas un pēc tam apstrādāt to ar PHP un saglabāt datus mūsu tabulas blob laukos no plkst. datu bāze.

Tīmekļa izveide mūsu serverī
Mēs izveidojam tīmekli savā serverī mapē ar nosaukumu koncesionārs. Tīmekļa lapa saturēs HTML un PHP kodu tādā formā, kādā mums jāizmanto atribūts enctype = "daudzdaļīgas / veidlapas dati" tas norāda, ka failus var nosūtīt, izmantojot veidlapu, ja tai nav atribūta, failus nevar nosūtīt.

Šī lapa tiks saukta augsts.php

Kods ir šāds:

 $ vērtība) {$ _POST [$ key] = mysql_real_escape_string ($ vērtība); } // mēs lasām datus no fotoattēla $ photo = $ _FILES ["foto"] ["tmp_name"]; $ photoname = $ _FILES ["foto"] ["nosaukums"]; // tas ir fails, ko mēs pievienosim blob laukam $ foto = $ _FILES ['foto'] ['tmp_name']; // pirms saglabāšanas mēs to pārvēršam binārā $ photo = mysql_real_escape_string (file_get_contents ($ _ FILES ["foto"] ["tmp_name"])); $ sql = "INSERT INTO" automašīnas "(" marka "," modelis "," foto ") VĒRTĪBAS ('{$ _POST [' make ']}', '{$ _POST [' model ']}', '$ Foto ') "; mysql_query ($ sql) vai mirst (mysql_error ()); galvene ('Atrašanās vieta: Listautos.php'); }?> var13 ->

Zīmols:

Modelis:

Foto:

Tālāk mums tas būs jāparāda, mēs izveidosim lapu, kas interpretē bināro failu un parāda to, mēs izveidosim lapu verfoto.php un mēs norādīsim parādāmās fotogrāfijas ID.
 Dokuments bez nosaukuma

Vajadzības gadījumā mēs varam arī iegūt faila atribūtus šādā veidā:

 
Fails procesa laikā īslaicīgi tiek saglabāts atmiņā, ja rodas kļūda, dati var tikt pazaudēti vai nav pilnībā ierakstīti, PHP skripts pēc procesa pabeigšanas noņem pagaidu failu no atmiņas, pat ja tas netiek pabeigts pareizi.

Tālāk mēs izveidosim lapu, lai rediģētu automašīnas datus, kurus mēs sauksim rediģēt.php

 $ vērtība) {$ _POST [$ key] = mysql_real_escape_string ($ vērtība); } // mēs lasām datus no fotoattēla $ photo = $ _FILES ["foto"] ["tmp_name"]; $ photoname = $ _FILES ["foto"] ["nosaukums"]; // tas ir pagaidu fails $ photo = $ _FILES ['foto'] ['tmp_name']; // lasīt pagaidu failu binārā $ photo = mysql_real_escape_string (file_get_contents ($ _ FILES ["foto"] ["tmp_name"])); $ sql = "UPDATE` cars` SET` brand` = '{$ _POST [' brand ']}', `model` = '{$ _POST [' model ']}',` photo` = '$ photo' WHERE `id` = '$ id'"; mysql_query ($ sql) vai mirst (mysql_error ()); galvene ('Atrašanās vieta: Listautos.php'); } $ rows = mysql_fetch_array (mysql_query ("SELECT * FROM` autos` WHERE` id` = '$ id' ")); ?> var13 ->

Zīmols:

Modelis:

Modelis:

Foto:

>

Mums jāpatur prātā, ka, izdzēšot ierakstu, mēs vienlaikus izdzēsīsim failus un tos nevarēs atgūt. Lai izdzēstu ierakstu, mēs izveidosim lapu dzēst.php un mēs izmantosim šādu kodu.
 
Mēs esam izveidojuši vienkāršu kodu bez īpaša dizaina, lai izskaidrotu, kā saglabāt failus blob laukos, viens no trūkumiem ir tas, ka, uzglabājot failus binārā formātā, datu bāzes lielums ievērojami palielinās.
Viena no priekšrocībām ir tā, ka faili tiek saglabāti tabulā, kas ir labāk drošības apsvērumu dēļ, jo failiem var piekļūt tikai tad, ja jums ir atļaujas pārvaldīt datu bāzi un nav vienas fiziskas mapes, no kuras lejupielādēt failus vai uzbrucējs ar tām manipulē.

Vai jums patika šī apmācība un palīdzējāt tai?Jūs varat apbalvot autoru, nospiežot šo pogu, lai sniegtu viņam pozitīvu punktu

Jums palīdzēs attīstību vietā, daloties lapu ar draugiem

wave wave wave wave wave