Lagra filer i BLOB -fält med PHP och MySQL

Innehållsförteckning

När vi skapar en programvara eller en webbplats som använder filer måste vi bestämma hur vi ska lagra dem, en av möjligheterna är att skapa en mapp och lagra filerna där och en annan möjlighet är att lagra dem i databasen, vi måste komma ihåg att ett fält longblob den kan lagra upp till 4 gigabyte.

MySQL -databasmotorn låter dig använda blockfält som lagrar information i binärt format. Med det här formatet kan du lagra olika typer av filer, till exempel Word, Excel, alla typer av bilder, pdf -filer, etc. I denna handledning kommer vi att se hur man lagrar filer i en MySQL -databastabell, kommer data att skickas från ett html -formulär och bearbetas med PHP för att spara filerna i databasen.

För att utföra exemplen på självstudien behöver vi en fjärrserver eller en lokal som kan installeras som vi såg i självstudien:

  • Hur man installerar Xampp för att göra din dator till en webbserver, på så sätt kommer vi att ha stöd för php och mysql och alla nödvändiga bibliotek.

Därefter skapar vi databasen som kommer att lagra fordonsdata, med foto- och pdf -teknisk blad, för detta kommer vi att skapa från phpmyadmin exemplet att kallas en återförsäljare. Därefter skapar vi bilar -bordet.

 SKAPA DATABASE -återförsäljare; Tabellstruktur för tabellen `bilar` SKAPA TABELL` bilar` (` id` int (11) NOT NULL, `mark` varchar (150) DEFAULT '0',` model` varchar (150) DEFAULT '0', `foto ' longblob) ENGINE = InnoDB DEFAULT CHARSET = latin1; Index för tabellen `autos` ALTER TABLE` auto` ADD PRIMARY KEY (` id '); AUTO_INCREMENT av de dumpade tabellerna AUTO_INCREMENT i tabellen `autos` ALTER TABLE` autos` MODIFY `id` int (11) NOT NULL AUTO_INCREMENT;
Kod för tabellskapande

Vi skapar PHP -sidor och formulär för dataregistrering
Sedan vi skapar en config.php -fil varifrån vi kommer att ansluta till databasen:

 
Config.php

Därefter kommer vi att skapa en sida i PHP som kommer att ansvara för att lista alla poster i biltabellen.

 <? kastade ut "
"; kastade ut "
"; kastade ut ""; kastade ut ""; kastade ut ""; kastade ut ""; kastade ut "

"; $ result = mysql_query (" SELECT * FROM `autos`") eller trigger_error (mysql_error ()); medan ($ rader = mysql_fetch_array ($ resultat)) {föreach ($ rader AS $ key => $ värde) {$ rader [$ key] = stripslashes ($ value);} echo "
"; kastade ut ""; kastade ut ""; kastade ut ""; kastade ut " "; kastade ut "

"; } kastade ut "
varumärkeModellFotoÅtgärder
". $ rader ['mark']."". $ rader ['modell']." Visa FotoRedigera Avlägsna
"; eko" Ny bil ";?> var13 ->
Lista alla poster i tabellen

Formuläret för att registrera data som gör att vi kan registrera ett foto, för detta måste vi använda filelement som gör att vi kan välja en fil från webbläsaren och sedan bearbeta den med PHP och spara data i blob -fälten i vårt autotabell från databasen.

Skapandet av webben på vår server
Vi skapar webben i en mapp som kallas koncessionshavare på vår server. Webbsidan innehåller HTML- och PHP -koden, i formen måste vi använda attributet enctype = "multipart / form-data" som indikerar att filer kan skickas via formuläret, om det inte har attributet kan filer inte skickas.

Denna sida kommer att kallas hög. php

Koden är följande:

 $ värde) {$ _POST [$ key] = mysql_real_escape_string ($ värde); } // vi läser data från fotot $ photo = $ _FILES ["photo"] ["tmp_name"]; $ photoname = $ _FILES ["foto"] ["namn"]; // detta är filen som vi kommer att lägga till i blob -fältet $ foto = $ _FILES ['foto'] ['tmp_name']; // vi konverterar det till binärt innan vi sparar det $ photo = mysql_real_escape_string (file_get_contents ($ _ FILES ["photo"] ["tmp_name"])); $ sql = "INSERT INTO` cars` (` make`, `model`,` photo`) VÄRDEN ('{$ _POST [' make ']}', '{$ _POST [' model ']}', '$ Foto' ) "; mysql_query ($ sql) eller die (mysql_error ()); header ('Plats: Listautos.php'); }?> var13 ->

Varumärke:

Modell:

Foto:

Därefter måste vi visa det för det vi kommer att skapa en sida som tolkar den binära filen och visar den, vi kommer att skapa sidan verfoto.php och vi kommer att ange id: n för fotot som ska visas.
 namnlöst dokument

Vi kan också extrahera filens attribut om vi behöver det på följande sätt:

 
Filen lagras tillfälligt i minnet under processen. Om ett fel inträffar kan data gå förlorade eller inte registreras helt, PHP -skriptet tar bort den tillfälliga filen från minnet efter att processen är klar, även om den inte slutar korrekt.

Därefter skapar vi sidan för att redigera data för en bil, som vi kommer att kalla edit.php

 $ värde) {$ _POST [$ key] = mysql_real_escape_string ($ värde); } // vi läser data från fotot $ photo = $ _FILES ["photo"] ["tmp_name"]; $ photoname = $ _FILES ["foto"] ["namn"]; // detta är den tillfälliga filen $ photo = $ _FILES ['photo'] ['tmp_name']; // läs den tillfälliga filen i binärt $ photo = mysql_real_escape_string (file_get_contents ($ _ FILES ["foto"] ["tmp_name"])); $ sql = "UPDATE` cars` SET` brand` = '{$ _POST [' brand ']}', `model` = '{$ _POST [' model ']}',` photo` = '$ photo' VAR `id` = '$ id'"; mysql_query ($ sql) eller die (mysql_error ()); header ('Plats: Listautos.php'); } $ rader = mysql_fetch_array (mysql_query ("SELECT * FROM` autos` WHERE` id` = '$ id' ")); ?> var13 ->

Varumärke:

Modell:

Modell:

Foto:

>

Vi måste komma ihåg att om vi tar bort en post kommer vi att radera filerna samtidigt och de kan inte återställas. För att radera en post skapar vi sidan delete.php och vi kommer att använda följande kod.
 
Vi har gjort en enkel kod utan mycket design för att förklara hur man lagrar filer i blob -fält, en av nackdelarna är att databasens storlek växer mycket när man lagrar filer i binärt format.
En av fördelarna är att filerna sparas i en tabell, vilket är bättre av säkerhetsskäl, eftersom filerna endast kan nås om du har behörighet att hantera databasen och det inte finns någon fysisk mapp att ladda ner filerna från eller manipulera dem av en angripare.

Gillade du och hjälpte denna handledning?Du kan belöna författaren genom att trycka på den här knappen för att ge honom en positiv poäng

Du kommer att bidra till utvecklingen av webbplatsen, dela sidan med dina vänner

wave wave wave wave wave