Lagre filer i BLOB -felt med PHP og MySQL

Innholdsfortegnelse

Når vi lager en programvare eller et nettsted som bruker filer, må vi bestemme hvordan vi skal lagre dem, en av mulighetene er å lage en mappe og lagre filene der, og en annen mulighet er å lagre dem i databasen, vi må huske på at et felt langblokk den kan lagre opptil 4 gigabyte.

MySQL -databasemotoren lar deg bruke blokkfelt som lagrer informasjon i binært format. Dette formatet lar deg lagre forskjellige filtyper, for eksempel Word, Excel, alle typer bilder, pdf -filer, etc. I denne opplæringen får vi se hvordan lagre filer i en MySQL -databasetabell, blir dataene sendt fra et html -skjema og behandlet med PHP for å lagre filene i databasen.

For å utføre eksemplene på opplæringen trenger vi en ekstern server eller en lokal server som kan installeres slik vi så i opplæringen:

  • Hvordan installere Xampp for å gjøre datamaskinen til en webserver, på denne måten vil vi ha støtte for php og mysql og alle nødvendige biblioteker.

Deretter vil vi lage databasen som vil lagre kjøretøydata, med foto og pdf teknisk ark, for dette vil vi lage fra phpmyadmin eksemplet som skal kalles en forhandler. Deretter lager vi bilbordet.

 CREATE DATABASE forhandler; Bordstruktur for tabellen `autos` CREATE TABLE` autos` (` id` int (11) NOT NULL, `mark` varchar (150) DEFAULT '0',` model` varchar (150) DEFAULT '0', `photo` longblob) ENGINE = InnoDB DEFAULT CHARSET = latin1; Indekser i tabellen `autos` ALTER TABLE` auto` ADD PRIMARY KEY (` id`); AUTO_INCREMENT for de dumpede tabellene AUTO_INCREMENT for tabellen `autos` ALTER TABLE` autos` MODIFY` id` int (11) NOT NULL AUTO_INCREMENT;
Kode for opprettelse av bord

Vi lager PHP -sider og skjema for dataregistrering
Deretter vi vil lage en config.php -fil hvorfra vi vil koble til databasen:

 
Config.php

Deretter skal vi lage en side i PHP som har ansvaret for å liste alle postene i biltabellen.

 <? kastet ut "
"; kastet ut "
"; kastet ut ""; kastet ut ""; kastet ut ""; kastet ut ""; kastet ut "

"; $ result = mysql_query (" SELECT * FROM `autos`") eller trigger_error (mysql_error ()); while ($ rows = mysql_fetch_array ($ result)) {foreach ($ rows AS $ key => $ value) {$ rader [$ key] = stripslashes ($ value);} echo "
"; kastet ut ""; kastet ut ""; kastet ut ""; kastet ut " "; kastet ut "

"; } kastet ut "
MerkeModellBildeHandlinger
". $ rows ['mark']."". $ rows ['model']." Se bildeRedigere Ta vekk
"; ekko" Ny bil ";?> var13 ->
Liste over alle postene i tabellen

Skjemaet for å registrere dataene som gjør at vi kan registrere et bilde, for dette må vi bruke filelementer som lar oss velge en fil fra nettleseren og deretter behandle den med PHP og lagre dataene i blob -feltene i biltabellen vår fra databasen.

Opprettelse av nettet på vår server
Vi lager nettet i en mappe som heter konsesjonær på serveren vår. Websiden vil inneholde HTML- og PHP -koden, i formen må vi bruke attributtet enctype = "multipart / form-data" som indikerer at filer kan sendes gjennom skjemaet, hvis det ikke har attributtet, kan ikke filer sendes.

Denne siden vil bli kalt høy.php

Koden er følgende:

 $ verdi) {$ _POST [$ nøkkel] = mysql_real_escape_string ($ verdi); } // vi leser data fra bildet $ photo = $ _FILES ["photo"] ["tmp_name"]; $ photoname = $ _FILES ["photo"] ["name"]; // dette er filen vi vil legge til i blob -feltet $ foto = $ _FILES ['foto'] ['tmp_name']; // vi konverterer det til binært før vi lagrer det $ photo = mysql_real_escape_string (file_get_contents ($ _ FILES ["photo"] ["tmp_name"])); $ sql = "INSERT INTO` cars` (` make`, `model`,` photo`) VERDIER ('{$ _POST [' make ']}', '{$ _POST [' model ']}', '$ Foto ') "; mysql_query ($ sql) eller die (mysql_error ()); header ('Location: Listautos.php'); }?> var13 ->

Merke:

Modell:

Bilde:

Deretter må vi vise det for det, vi vil lage en side som tolker den binære filen og viser den, vi vil lage siden verfoto.php og vi vil indikere ID -en til bildet som skal vises.
 Navnløst dokument

Vi kan også trekke ut attributtene til filen hvis vi trenger den på følgende måte:

 
Filen lagres midlertidig i minnet under prosessen. Hvis det oppstår en feil kan dataene gå tapt eller ikke registreres fullstendig, PHP -skriptet fjerner den midlertidige filen fra minnet etter at prosessen er fullført, selv om den ikke fullføres riktig.

Deretter lager vi siden for å redigere dataene til en bil, som vi vil kalle edit.php

 $ verdi) {$ _POST [$ nøkkel] = mysql_real_escape_string ($ verdi); } // vi leser data fra bildet $ photo = $ _FILES ["photo"] ["tmp_name"]; $ photoname = $ _FILES ["photo"] ["name"]; // dette er den midlertidige filen $ photo = $ _FILES ['photo'] ['tmp_name']; // les den midlertidige filen i binært $ photo = mysql_real_escape_string (file_get_contents ($ _ FILES ["photo"] ["tmp_name"])); $ sql = "UPDATE` cars` SET` brand` = '{$ _POST [' brand ']}', `model` = '{$ _POST [' model ']}',` photo` = '$ photo' HVOR `id` = '$ id'"; mysql_query ($ sql) eller die (mysql_error ()); header ('Location: Listautos.php'); } $ rows = mysql_fetch_array (mysql_query ("SELECT * FROM` autos` WHERE` id` = '$ id' ")); ?> var13 ->

Merke:

Modell:

Modell:

Bilde:

>

Vi må huske på at hvis vi sletter en post, sletter vi filene samtidig, og de kan ikke gjenopprettes. For å slette en post vil vi lage siden delete.php og vi vil bruke følgende kode.
 
Vi har laget en enkel kode uten mye design for å forklare hvordan du lagrer filer i blob -felt, en av ulempene er at størrelsen på databasen vokser mye når du lagrer filer i binært format.
En av fordelene er at filene er lagret i en tabell, noe som er bedre av sikkerhetsmessige årsaker, siden filene bare kan nås hvis du har tillatelse til å administrere databasen og det ikke er noen fysisk mappe å laste ned filene fra. eller manipulere dem av en angriper.

Likte og hjalp du denne opplæringen?Du kan belønne forfatteren ved å trykke på denne knappen for å gi ham et positivt poeng

Du vil bidra til utvikling av området, dele siden med vennene dine

wave wave wave wave wave