Saugokite failus BLOB laukuose naudodami PHP ir MySQL

Turinys

Kurdami programinę įrangą ar svetainę, kurioje naudojami failai, turime nuspręsti, kaip juos saugoti, viena iš galimybių yra sukurti aplanką ir jame saugoti failus, o kita galimybė - saugoti juos duomenų bazėje. kad laukas ilgaplaukis jis gali saugoti iki 4 gigabaitų.

„MySQL“ duomenų bazės variklis leidžia naudoti blokų laukus, kuriuose informacija saugoma dvejetainiu formatu. Šis formatas leidžia saugoti įvairių tipų failus, pvz., „Word“, „Excel“, bet kokio tipo vaizdus, ​​pdf failus ir kt. Šioje pamokoje pamatysime kaip saugoti failus „MySQL“ duomenų bazės lentelėje, duomenys bus siunčiami iš html formos ir apdorojami naudojant PHP, kad būtų išsaugoti failai duomenų bazėje.

Norėdami atlikti mokymo programos pavyzdžius, mums reikės nuotolinio arba vietinio serverio, kurį galima įdiegti, kaip matėme pamokoje:

  • Kaip įdiegti „Xampp“, kad jūsų kompiuteris taptų žiniatinklio serveriu, tokiu būdu turėsime palaikymą „php“ ir „mysql“ bei visas reikalingas bibliotekas.

Tada mes sukursime duomenų bazę, kurioje bus saugomi transporto priemonės duomenys, su nuotrauka ir pdf techniniu lapu phpmyadmin pavyzdys, kurį reikia vadinti prekiautoju. Toliau sukursime automobilių lentelę.

 CREATE DATABASE pardavėjas; Lentelės struktūra „autos“ KURTI LENTELĘ „autos“ („id“ int (11) NOT NULL, „mark“ varchar (150) Numatytasis „0“, „modelis“ varchar (150) Numatytasis „0“, „nuotrauka“ longblob) VARIKLIS = „InnoDB DEFAULT CHARSET“ = latin1; Lentelės indeksai `autos` ALTER TABLE` autos` PRIDĖTI PAGRINDINĮ RAKTĄ (` id`); AUTO_INCREMENT išmestos lentelės AUTO_INCREMENT „autos“ lentelės ALTER TABLE` autos` MODIFY `id` int (11) NOT NULL AUTO_INCREMENT;
Lentelės kūrimo kodas

Kuriame PHP puslapius ir formą duomenų registravimui
Tada sukursime failą config.php iš kur prisijungsime prie duomenų bazės:

 
Config.php

Toliau mes sukursime puslapį PHP, kuris bus atsakingas už visų automobilių lentelės įrašų sąrašą.

 <? išmetė "
"; išmetė "
"; išmetė ""; išmetė ""; išmetė ""; išmetė ""; išmetė "

"; $ result = mysql_query (" SELECT * FROM `autos`") arba trigger_error (mysql_error ()); while ($ rows = mysql_fetch_array ($ result)) {foreach ($ rows AS $ key => $ value) {$ eilutės [$ raktas] = dryžiai ($ vertė);} aidas "
"; išmetė ""; išmetė ""; išmetė ""; išmetė " "; išmetė "

"; } išmetė "
Prekės ženklasModelisNuotraukaVeiksmai
". $ eilučių [" ženklas "]."". $ eilučių ['modelis']." Peržiūrėti nuotraukąRedaguoti Pašalinti
"; aidas" Naujas automobilis ";?> var13 ->
Išvardykite visus įrašus lentelėje

Duomenų registravimo forma, leidžianti mums užregistruoti nuotrauką, tam turime naudoti failo elementus, leidžiančius pasirinkti failą iš naršyklės, tada apdoroti jį naudojant PHP ir išsaugoti duomenis mūsų lentelės „blob“ laukuose iš duomenų bazę.

Žiniatinklio kūrimas mūsų serveryje
Mes kuriame žiniatinklį savo serverio aplanke, vadinamame koncesininku. Tinklalapyje bus HTML ir PHP kodas, kurio forma turime naudoti atributą enctype = "kelių dalių / formos duomenys" tai rodo, kad failus galima siųsti naudojant formą, jei ji neturi atributo, failų siųsti negalima.

Šis puslapis bus vadinamas didelis.php

Kodas yra toks:

 $ vertė) {$ _POST [$ key] = mysql_real_escape_string ($ vertė); } // skaitome duomenis iš nuotraukos $ photo = $ _FILES ["nuotrauka"] ["tmp_name"]; $ photoname = $ _FILES ["nuotrauka"] ["vardas"]; // tai yra failas, kurį pridėsime prie BLOB lauko $ foto = $ _FILES ['foto'] ['tmp_name']; // prieš išsaugodami konvertuojame į dvejetainę $ photo = mysql_real_escape_string (file_get_contents ($ _ FILES ["nuotrauka"] ["tmp_name"])); $ sql = "INSERT INTO" automobiliai "(" markė "," modelis "," nuotrauka ") VERTĖS ('{$ _POST [' make ']}', '{$ _POST [' model ']}', '$ Nuotrauka ') "; mysql_query ($ sql) arba mirti (mysql_error ()); antraštė ('Vieta: Listautos.php'); }?> var13 ->

Prekės ženklas:

Modelis:

Nuotrauka:

Toliau turėsime jį parodyti, sukursime puslapį, kuris interpretuoja dvejetainį failą ir jį parodys, sukursime puslapį verfoto.php ir nurodysime parodomos nuotraukos ID.
 nepavadintas dokumentas

Mes taip pat galime išgauti failo atributus, jei mums to reikia, tokiu būdu:

 
Proceso metu failas laikinai saugomas atmintyje, jei įvyksta klaida, duomenys gali būti prarasti arba neįrašyti visiškai, PHP scenarijus pašalina laikiną failą iš atminties, kai procesas baigiamas, net jei jis neužbaigiamas tinkamai.

Toliau sukursime puslapį, kuriame redaguosime automobilio duomenis, kuriuos vadinsime redaguoti.php

 $ vertė) {$ _POST [$ key] = mysql_real_escape_string ($ vertė); } // skaitome duomenis iš nuotraukos $ photo = $ _FILES ["nuotrauka"] ["tmp_name"]; $ photoname = $ _FILES ["nuotrauka"] ["vardas"]; // tai laikinas failas $ photo = $ _FILES ['nuotrauka'] ['tmp_name']; // skaityti laikiną failą dvejetainėje $ photo = mysql_real_escape_string (file_get_contents ($ _ FILES ["nuotrauka"] ["tmp_name"])); $ sql = "UPDATE` cars` SET` brand` = '{$ _POST [' brand ']}', `model` = '{$ _POST [' model ']}',` photo` = '$ photo' WHERE `id` = '$ id'"; mysql_query ($ sql) arba mirti (mysql_error ()); antraštė ('Vieta: Listautos.php'); } $ rows = mysql_fetch_array (mysql_query ("SELECT * FROM` autos` WHERE` id` = '$ id' ")); ?> var13 ->

Prekės ženklas:

Modelis:

Modelis:

Nuotrauka:

>

Turime turėti omenyje, kad jei ištrinsime įrašą, tuo pačiu metu ištrinsime failus ir jie negali būti atkurti. Norėdami ištrinti įrašą, sukursime puslapį ištrinti.php ir mes naudosime šį kodą.
 
Mes sukūrėme paprastą kodą be daug dizaino, kad paaiškintume, kaip saugoti failus „blob“ laukuose, vienas iš trūkumų yra tas, kad duomenų bazės dydis labai išauga, kai saugomi failai dvejetainiu formatu.
Vienas iš privalumų yra tas, kad failai yra išsaugomi lentelėje, o tai geriau dėl saugumo, nes failus galima pasiekti tik turint leidimus valdyti duomenų bazę ir nėra vieno fizinio aplanko, iš kurio būtų galima atsisiųsti failus arba manipuliuoti jais užpuolikas.

Ar jums patiko ir padėjo ši pamoka?Galite apdovanoti autorių paspausdami šį mygtuką, kad suteiktumėte jam teigiamą tašką

Padėsite svetainės plėtrą, dalintis puslapį su draugais

wave wave wave wave wave