Gem filer i BLOB -felter med PHP og MySQL

Indholdsfortegnelse

Når vi opretter en software eller et websted, der bruger filer, skal vi beslutte, hvordan vi gemmer dem, en af ​​mulighederne er at oprette en mappe og gemme filerne der, og en anden mulighed er at gemme dem i databasen, vi skal huske på at et felt langblade den kan gemme op til 4 gigabyte.

MySQL -databasemotoren giver dig mulighed for at bruge blokfelter, der gemmer oplysninger i binært format. Dette format giver dig mulighed for at gemme forskellige typer filer, såsom Word, Excel, enhver form for billeder, pdf -filer osv. I denne tutorial ser vi hvordan man gemmer filer i en MySQL -databasetabel, vil dataene blive sendt fra en html -formular og behandlet med PHP for at gemme filerne i databasen.

For at udføre eksemplerne på selvstudiet skal vi bruge en fjernserver eller en lokal server, der kan installeres som vi så i selvstudiet:

  • Sådan installeres Xampp for at gøre din computer til en webserver, på denne måde har vi support til php og mysql og alle de nødvendige biblioteker.

Dernæst opretter vi den database, der vil gemme køretøjsdata, med foto og pdf teknisk ark, til dette vil vi oprette fra phpmyadmin eksemplet skal kaldes en forhandler. Dernæst opretter vi bilens bord.

 Opret DATABASE forhandler; Bordstruktur til bordet `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; Indekser i tabellen `autos` ALTER TABLE` autos` TILFØJ PRIMÆRNøgle (` id`); AUTO_INCREMENT af de dumpede tabeller AUTO_INCREMENT i tabellen `autos` ALTER TABLE` autos` MODIFY` id` int (11) NOT NULL AUTO_INCREMENT;
Kode til oprettelse af bord

Vi opretter PHP -sider og formular til dataregistrering
Derefter vi opretter en config.php -fil hvorfra vi vil oprette forbindelse til databasen:

 
Config.php

Dernæst skal vi oprette en side i PHP, der har ansvaret for at liste alle poster i bilens tabel.

 <? smed ud "
"; smed ud "
"; smed ud ""; smed ud ""; smed ud ""; smed ud ""; smed ud "

"; $ result = mysql_query (" SELECT * FROM `autos`") eller trigger_error (mysql_error ()); while ($ rows = mysql_fetch_array ($ result)) {foreach ($ rows AS $ key => $ value) {$ rækker [$ key] = stripslashes ($ value);} echo "
"; smed ud ""; smed ud ""; smed ud ""; smed ud " "; smed ud "

"; } smed ud "
MærkeModelFotoHandlinger
". $ rækker ['mærke']."". $ rækker ['model']." Se fotoRedigere Fjerne
"; ekko" Ny bil ";?> var13 ->
Liste over alle poster i tabellen

Formularen til registrering af de data, der giver os mulighed for at registrere et foto, til dette skal vi bruge filelementer, der giver os mulighed for at vælge en fil fra browseren og derefter behandle den med PHP og gemme dataene i klatfelterne i vores autotabel fra databasen.

Oprettelse af internettet på vores server
Vi opretter internettet i en mappe kaldet koncessionshaver på vores server. Websiden vil indeholde HTML- og PHP -koden, i formen skal vi bruge attributten enctype = "multipart / form-data" der angiver, at filer kan sendes via formularen, hvis den ikke har attributten, kan filer ikke sendes.

Denne side vil blive kaldt høj.php

Koden er følgende:

 $ værdi) {$ _POST [$ nøgle] = mysql_real_escape_string ($ værdi); } // vi læser data fra fotoet $ photo = $ _FILES ["photo"] ["tmp_name"]; $ photoname = $ _FILES ["foto"] ["navn"]; // dette er den fil, vi vil tilføje til klatfeltet $ foto = $ _FILES ['foto'] ['tmp_name']; // vi konverterer det til binært, før vi gemmer det $ photo = mysql_real_escape_string (file_get_contents ($ _ FILES ["photo"] ["tmp_name"])); $ sql = "INSERT INTO` cars` (` make`, `model`,` photo`) VÆRDIER ('{$ _POST [' make ']}', '{$ _POST [' model ']}', '$ Foto' ) "; mysql_query ($ sql) eller die (mysql_error ()); header ('Location: Listautos.php'); }?> var13 ->

Mærke:

Model:

Foto:

Dernæst bliver vi nødt til at vise det for det, vi vil oprette en side, der fortolker den binære fil og viser den, vi vil oprette siden verfoto.php og vi angiver id'et på billedet, der skal vises.
 Uden titel uden dokument

Vi kan også udtrække filens attributter, hvis vi har brug for det på følgende måde:

 
Filen gemmes midlertidigt i hukommelsen under processen. Hvis der opstår en fejl, kan data gå tabt eller ikke registreres fuldstændigt, PHP -scriptet fjerner den midlertidige fil fra hukommelsen, efter at processen er færdig, selvom den ikke slutter korrekt.

Dernæst opretter vi siden til redigering af data fra en bil, som vi kalder edit.php

 $ værdi) {$ _POST [$ nøgle] = mysql_real_escape_string ($ værdi); } // vi læser data fra fotoet $ photo = $ _FILES ["photo"] ["tmp_name"]; $ photoname = $ _FILES ["foto"] ["navn"]; // dette er den midlertidige fil $ photo = $ _FILES ['photo'] ['tmp_name']; // læs den midlertidige fil i binært $ photo = mysql_real_escape_string (file_get_contents ($ _ FILES ["foto"] ["tmp_name"])); $ sql = "UPDATE` biler` SET` brand` = '{$ _POST [' brand ']}', `model` = '{$ _POST [' model ']}',` photo` = '$ photo' HVOR 'id` =' $ id '"; mysql_query ($ sql) eller die (mysql_error ()); header ('Location: Listautos.php'); } $ rækker = mysql_fetch_array (mysql_query ("SELECT * FROM` autos` WHERE` id` = '$ id' ")); ?> var13 ->

Mærke:

Model:

Model:

Foto:

>

Vi skal huske på, at hvis vi sletter en post, sletter vi filerne på samme tid, og de kan ikke gendannes. For at slette en post opretter vi siden delete.php og vi vil bruge følgende kode.
 
Vi har lavet en simpel kode uden meget design for at forklare, hvordan man gemmer filer i blobfelter, en af ​​ulemperne er, at databasens størrelse vokser meget, når man gemmer filer i binært format.
En af fordelene er, at filerne gemmes i en tabel, hvilket er bedre af sikkerhedsmæssige årsager, da filerne kun kan tilgås, hvis du har tilladelser til at administrere databasen, og der ikke er nogen fysisk mappe, hvorfra filerne kan downloades eller manipulere dem af en angriber.

Kan du lide og hjælpe denne vejledning?Du kan belønne forfatteren ved at trykke på denne knap for at give ham et positivt punkt

Du vil bidrage til udviklingen af ​​hjemmesiden, at dele siden med dine venner

wave wave wave wave wave