Armazene arquivos em campos BLOB com PHP e MySQL

Índice

Quando criamos um software ou site que utiliza arquivos, devemos decidir como armazená-los, uma das possibilidades é criar uma pasta e armazenar os arquivos lá e outra possibilidade é armazená-los no banco de dados, devemos ter em mente que um campo longblob ele pode armazenar até 4 gigabytes.

O mecanismo de banco de dados mySQL permite que você use campos de bloco que armazenam informações em formato binário. Este formato permite armazenar vários tipos de arquivos, como Word, Excel, qualquer tipo de imagem, arquivos PDF, etc. Neste tutorial, veremos como armazenar arquivos em uma tabela de banco de dados MySQL, os dados serão enviados de um formulário html e processados ​​com PHP para salvar os arquivos no banco de dados.

Para realizar os exemplos do tutorial, precisaremos de um servidor remoto ou local que possa ser instalado como vimos no tutorial:

  • Como instalar o Xampp para transformar seu computador em um servidor web, desta forma teremos suporte para php e mysql e todas as bibliotecas necessárias.

A seguir criaremos o banco de dados que armazenará os dados do veículo, com foto e ficha técnica em pdf, para isso criaremos a partir de phpmyadmin o exemplo a ser chamado de revendedor. Em seguida, criaremos a tabela de carros.

 Revendedor CREATE DATABASE; Estrutura da tabela para a tabela `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; Índices da tabela `autos` ALTER TABLE` autos` ADD PRIMARY KEY (` id`); AUTO_INCREMENT das tabelas despejadas AUTO_INCREMENT da tabela `autos` ALTER TABLE` autos` MODIFY` id` int (11) NOT NULL AUTO_INCREMENT;
Código de criação de tabela

Criamos páginas e formulários PHP para registro de dados
A seguir vamos criar um arquivo config.php de onde nos conectaremos ao banco de dados:

 
Config.php

A seguir vamos criar uma página em PHP que se encarregará de listar todos os registros da tabela autos.

 <? jogou fora "
"; jogou fora "
"; jogou fora ""; jogou fora ""; jogou fora ""; jogou fora ""; jogou fora "

"; $ result = mysql_query (" SELECT * FROM `autos`") ou trigger_error (mysql_error ()); while ($ rows = mysql_fetch_array ($ result)) {foreach ($ rows AS $ key => $ value) {$ linhas [$ key] = stripslashes ($ value);} echo "
"; jogou fora ""; jogou fora ""; jogou fora ""; jogou fora " "; jogou fora "

"; } jogou fora "
MarcaModelofotoAções
". $ rows ['mark']."". $ rows ['model']." Ver fotoEditar Remover
"; echo" Carro novo ";?> var13 ->
Liste todos os registros na tabela

O formulário para registrar os dados que nos permitem registrar uma foto, para isso devemos usar elementos de arquivo que nos permitem selecionar um arquivo do navegador e, em seguida, processá-lo com PHP e salvar os dados nos campos de blob de nossa tabela autos de o banco de dados.

Criação da web em nosso servidor
Criamos a web dentro de uma pasta chamada concessionaire em nosso servidor. A página da web conterá o código HTML e PHP, na forma devemos usar o atributo enctype = "multipart / form-data" que indica que os arquivos podem ser enviados através do formulário, caso não possua o atributo, os arquivos não podem ser enviados.

Esta página será chamada high.php

O código é o seguinte:

 $ value) {$ _POST [$ key] = mysql_real_escape_string ($ value); } // lemos os dados da foto $ photo = $ _FILES ["photo"] ["tmp_name"]; $ photoname = $ _FILES ["foto"] ["nome"]; // este é o arquivo que adicionaremos ao campo blob $ foto = $ _FILES ['foto'] ['tmp_name']; // convertemos para binário antes de salvá-lo $ photo = mysql_real_escape_string (file_get_contents ($ _ FILES ["photo"] ["tmp_name"])); $ sql = "INSERT INTO` cars` (` make`, `model`,` photo`) VALUES ('{$ _POST [' make ']}', '{$ _POST [' model ']}', '$ Foto' ) "; mysql_query ($ sql) ou die (mysql_error ()); cabeçalho ('Localização: Listautos.php'); }?> var13 ->

Marca:

Modelo:

Foto:

A seguir teremos que mostrá-lo para isso criaremos uma página que interpreta o arquivo binário e o exibiremos, criaremos a página verfoto.php e vamos indicar o id da foto a mostrar.
 Documento sem título

Também podemos extrair os atributos do arquivo se precisarmos da seguinte maneira:

 
O arquivo é armazenado na memória temporariamente durante o processo, se ocorrer um erro os dados podem ser perdidos ou não gravados completamente, o script PHP remove o arquivo temporário da memória após o processo ser finalizado, mesmo que não termine corretamente.

A seguir, criaremos a página para editar os dados de um carro, que chamaremos edit.php

 $ value) {$ _POST [$ key] = mysql_real_escape_string ($ value); } // lemos os dados da foto $ photo = $ _FILES ["photo"] ["tmp_name"]; $ photoname = $ _FILES ["foto"] ["nome"]; // este é o arquivo temporário $ photo = $ _FILES ['photo'] ['tmp_name']; // ler o arquivo temporário em binário $ photo = mysql_real_escape_string (file_get_contents ($ _ FILES ["photo"] ["tmp_name"])); $ sql = "UPDATE` cars` SET` brand` = '{$ _POST [' brand ']}', `model` = '{$ _POST [' model ']}',` photo` = '$ photo' ONDE `id` = '$ id'"; mysql_query ($ sql) ou die (mysql_error ()); cabeçalho ('Localização: Listautos.php'); } $ rows = mysql_fetch_array (mysql_query ("SELECT * FROM` autos` WHERE` id` = '$ id' ")); ?> var13 ->

Marca:

Modelo:

Modelo:

Foto:

>

Devemos ter em mente que se excluirmos um registro, excluiremos os arquivos ao mesmo tempo e eles não poderão ser recuperados. Para deletar um registro, vamos criar a página delete.php e usaremos o código a seguir.
 
Fizemos um código simples sem muito design para explicar como armazenar arquivos em campos blob, uma das desvantagens é que o tamanho do banco de dados cresce muito ao armazenar arquivos em formato binário.
Uma das vantagens é que os arquivos são salvos dentro de uma tabela, o que é melhor por questões de segurança, já que os arquivos só podem ser acessados ​​se você tiver as permissões para gerenciar o banco de dados e não houver uma pasta física para baixar os arquivos ou manipulá-los por um invasor.

Gostou e ajudou este tutorial?Você pode recompensar o autor pressionando este botão para dar a ele um ponto positivo
wave wave wave wave wave