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!