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