Armazenar e Recuperar a Imagem do Banco de dados MySQL utilizando PHP

Geralmente, quando nós upload de arquivo de imagem em PHP, a imagem carregada é armazenado em um diretório do servidor e o respectivo nome da imagem é armazenada no banco de dados. No momento da exibição, o arquivo é recuperado do servidor e a imagem é renderizada na página da web. Mas, se você não quiser consumir o espaço do servidor, o arquivo pode ser armazenado apenas no banco de dados. Você pode fazer upload de uma imagem sem armazenar o arquivo fisicamente no servidor usando o banco de dados MySQL. É muito fácil armazenar e recuperar imagens do banco de dados usando PHP e MySQL.

Se você está preocupado com o espaço do servidor e a necessidade de espaço livre no seu servidor, você pode inserir o arquivo de imagem diretamente no banco de dados sem o upload para o diretório do servidor. Esse procedimento ajuda a otimizar o espaço do servidor porque o conteúdo do arquivo de imagem é armazenado no banco de dados e não no servidor. Neste tutorial, mostraremos como armazenar arquivos de imagem no banco de dados MySQL e recuperar imagens do banco de dados usando PHP.

Antes de começar a integrar o upload de arquivos com o banco de dados, dê uma olhada na estrutura do arquivo.

store_retrieve_image_from_database/├── dbConfig.php├── index.php├── upload.php├── view.php└── css/ └── style.css

inserir arquivo de imagem no MySQL

o MySQL possui um tipo de dados BLOB (binary large object) que pode conter uma grande quantidade de dados binários. O tipo de dados BLOB é perfeito para armazenar dados de imagem no banco de dados. No MySQL, quatro tipos de BLOB estão disponíveis-TINYBLOB, BLOB, MEDIUMBLOB e LONGBLOB. O tipo de dados LONGBLOB é perfeito para armazenar os dados do arquivo de imagem.

Criar Tabela de banco de dados

para armazenar o conteúdo do arquivo, é necessária uma tabela no banco de dados. O SQL a seguir cria uma tabela images com o campo Tipo de dados LONGBLOB no banco de dados MySQL.

CRIAR TABELA `imagens` ( `id` int(11) not NULL AUTO_INCREMENT, `imagem` longblob not NULL, `created` datetime not NULL DEFAULT current_timestamp(), PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

Configuração de Banco de dados (dbConfig.php)

o arquivo dbConfig.php é usado para conectar e selecionar o banco de dados. Especifique o host do banco de dados ($dbHost), nome de usuário ($dbUsername), senha ($dbPassword) e nome ($dbName) de acordo com suas credenciais de banco de dados MySQL.

<?php 
// Database configuration
$dbHost = "localhost";
$dbUsername = "root";
$dbPassword = "root";
$dbName = "codexworld";
// Create database connection
$db = new mysqli($dbHost, $dbUsername, $dbPassword, $dbName);
// Check connection
if ($db->connect_error) {
die("Connection failed: " . $db->connect_error);
}

formulário de Upload de imagem

crie um formulário HTML com um campo de entrada de arquivo para selecionar um arquivo de imagem para upload. Certifique-se de que a tag <form> contenha os seguintes atributos.

  • method=”post”
  • enctype=”multipart/form-data”
<form action="upload.php" method="post" enctype="multipart/form-data"> <a etiqueta>Selecione o Arquivo de Imagem:</etiqueta> <input type="file" name="imagem"> <input type="submit" name="submit" value="Enviar"></formulário>

Armazenamento de Arquivo de Imagem no Banco de dados (upload.php)

o arquivo upload.php lida com o processo de upload de imagem e inserção de banco de dados.

  • verifique se o usuário seleciona um arquivo de imagem para carregar.
  • recupere o conteúdo do arquivo de imagem pelo tmp_name usando a função PHP file_get_contents ().
  • insira o conteúdo binário da imagem no banco de dados usando PHP e MySQL.
  • mostrar o status de upload da imagem para o usuário.
<?php 
// Include the database configuration file
require_once 'dbConfig.php';
// If file upload form is submitted
$status = $statusMsg = '';
if(isset($_POST)){
$status = 'error';
if(!empty($_FILES)) {
// Get file info
$fileName = basename($_FILES);
$fileType = pathinfo($fileName, PATHINFO_EXTENSION);
// Allow certain file formats
$allowTypes = array('jpg','png','jpeg','gif');
if(in_array($fileType, $allowTypes)){
$image = $_FILES;
$imgContent = addslashes(file_get_contents($image));
// Insert image content into database
$insert = $db->query("INSERT into images (image, created) VALUES ('$imgContent', NOW())");
if($insert){
$status = 'success';
$statusMsg = "File uploaded successfully.";
}else{
$statusMsg = "File upload failed, please try again.";
}
}else{
$statusMsg = 'Sorry, only JPG, JPEG, PNG, & GIF files are allowed to upload.';
}
}else{
$statusMsg = 'Please select an image file to upload.';
}
}
// Display status message
echo $statusMsg;
?>

recuperar imagem do banco de dados (ver.php)

no arquivo view.php, recuperaremos o conteúdo da imagem do banco de dados MySQL e os listaremos na página da web.

  • os parâmetros data, charset e base64 no atributo src são usados para exibir BLOB de imagem do banco de dados MySQL.
<?php 
// Include the database configuration file
require_once 'dbConfig.php';
// Get image data from database
$result = $db->query("SELECT image FROM images ORDER BY id DESC");
?><?php if($result->num_rows > 0){ ?>
<div class="gallery">
<?php while($row = $result->fetch_assoc()){ ?>
<img src="data:image/jpg;charset=utf8;base64,<?php echo base64_encode($row); ?>" />
<?php } ?>
</div>
<?php }else{ ?>
<p class="status error">Image(s) not found...</p>
<?php } ?>

carregue várias imagens e armazene no banco de dados usando PHP e MySQL

conclusão

este tutorial ajuda você a integrar a funcionalidade de upload de arquivos sem armazenar arquivos no servidor. Você pode usar este script de exemplo para fazer upload de & armazenar imagens no banco de dados e buscar imagens do banco de dados e exibi-las na página da Web usando PHP e MySQL. Para tornar o processo de upload de imagem fácil de usar, use jQuery para fazer upload de arquivos com barra de progresso usando Ajax e PHP.

você deseja obter ajuda de implementação ou modificar ou aprimorar a funcionalidade deste script? Enviar solicitação de Serviço Pago

se você tiver alguma dúvida sobre este script, envie-o para nossa comunidade de QA-faça a pergunta

Deixe uma resposta

O seu endereço de email não será publicado.