Como criar formulário upload múltiplo com PHP e salvar o nome do arquivo no banco de dados
Neste tutorial, será apresentado como criar um formulário de upload múltiplo com PHP e salvar o nome do arquivo no banco de dados.
Primeiramente, será mostrado como criar um formulário de upload múltiplo com PHP e apresentar o preview das imagens.
Em seguida, será apresentado como realizar o upload múltiplo com PHP e salvar o nome da imagem no banco de dados.
Por fim, será mostrado como listar várias imagens do produto.
Download do código fonte desenvolvido na aula: Download
Curso de PHP Developer: Mais Detalhes do Curso
Playlist completa sobre upload de imagem com JavaScript: Acessar
Receber as aulas gratuitas do curso de PHP Developer: Acessar
Para começar, é utilizado como base o projeto da aula "Como validar múltiplas imagens com PHP".
Em seguida, criado o campo "nome" no arquivo "index.php".
<label>Nome do Produto: </label>
<input type="text" name="nome_produto" id="nome_produto" placeholder="Nome completo do produto"><br><br>
No arquivo "upload.php", foi implementado o recebimento dos dados do campo "nome", criada a QUERY para cadastrar no banco de dados e recuperar o último id inserido no banco de dados.
// Receber os dados do produto
$nome_produto = filter_input(INPUT_POST, 'nome_produto', FILTER_DEFAULT);
// Criar a QUERY salvar o nome do produto no banco de dados
$query_produto = "INSERT INTO produtos (nome_produto) VALUES (:nome_produto)";
// Preparar a QUERY
$cad_produto = $conn->prepare($query_produto);
// Substituir o link pelo valor
$cad_produto->bindParam(':nome_produto', $nome_produto, PDO::PARAM_STR);
// Executar a QUERY
$cad_produto->execute();
// Id do registro cadastrado
$idProduto = $conn->lastInsertId();
Também implementado o laço de repetição para ler os arquivos recebidos do formulário e salvá-los no banco de dados.
// Percorrer a lista de arquivos
foreach ($_FILES['imagens']['tmp_name'] as $chave => $arquivo) {
// Receber os valores da imagem
$nomeArquivo = $_FILES['imagens']['name'][$chave];
$localTemporarioArquivo = $_FILES['imagens']['tmp_name'][$chave];
// Recuperar a extensão do arquivo
$extensao = strtolower(pathinfo($nomeArquivo, PATHINFO_EXTENSION));
// Gerar um nome único para o arquivo
$nomeArquivoPersonalizado = uniqid() . ".$extensao";
// Mover o arquivo para o diretório de destino
if (move_uploaded_file($localTemporarioArquivo, $diretorioDestino . $nomeArquivoPersonalizado)) {
// Criar a QUERY cadastrar no banco de dados
$query_arquivo = "INSERT INTO arquivos (nome_arquivo, produto_id) VALUES (:nome_arquivo, :produto_id)";
// Preparar a QUERY
$cad_arquivo = $conn->prepare($query_arquivo);
// Substituir o link pelo valor
$cad_arquivo->bindParam(':nome_arquivo', $nomeArquivoPersonalizado, PDO::PARAM_STR);
$cad_arquivo->bindParam(':produto_id', $idProduto, PDO::PARAM_INT);
// Executar a QUERY
$cad_arquivo->execute();
$mensagens .= "<p style='color: #282;'>Upload do arquivo " . $nomeArquivo . " realizado com sucesso.</p>";
} else {
$mensagens .= "<p style='color: #f00;'>Erro: Upload do arquivo " . $nomeArquivo . " não realizado.</p>";
}
}
Baixar o código-fonte completo do projeto.
Bom, era isso. Espero que o tutorial tenha sido útil!