Recentemente tive um desafio para aprender a inserir vários arquivos por meio de um único input, usando php e mysql. Os conteúdos na internet eram vários quando se fala de upload múltiplo, mas não havia quase nada sobre inserir também no banco de dados.
Então resolvi escrever esse artigo para ajudar outros que queiram executar mesma tarefa.
Mão no Códio!
Primeramente crie um formulário html que contenha um input file para enviar seus documentos. Isso é bem simples, veja o código comentado abaixo.
<!DOCTYPE html>
<html>
<head>
<title>input</title>
</head>
<body>
<form method="post" action="upload.php" enctype="multipart/form-data">
<input type="file" name="arquivo[]" multiple required>
<input type="submit" name="enviar">
</form>
</body>
</html>
Um vez feito o fomulário atente-se para onde ele envia, no action da tag form ele enviar para uma arquivos upload.php que será responsável por salvar e inserir no banco de dados.
SQL
No MySQL eu tenho uma dabela que guardará o endereço dos arquivos. Essa tabela contém apenas 3 colunas:
id | doc_1 | contratante |
id, int auto increment | VARCHAR | VARCHAR |
Sabendo disso veja o arquivo upload.php abaixo
<?php
//variavel id
$id =0;
//pega um dado de sessão
$logado= $_SESSION['nome_cliente'];
//diretorio de envio onde será quardado os arquivos, ele deve ser uma pasta no mesmo lugar onde está o arquivo de upload
$diretorio = "arquivos/";
//verifica se o diretorio existe
if(!is_dir($diretorio)){
echo "Pasta $diretorio nao existe";
}else{
//ver se os arquivos foram setados
$arquivo = isset($_FILES['arquivo']) ? $_FILES['arquivo'] : FALSE;
//laço de inserção dos arquivos
for ($controle = 0; $controle < count($arquivo['name']); $controle++){
//renomeia os arquivos e define o local onde salva
$nomes =$arquivo['name'];
$extensao = explode('.',$nomes);
$extensao = end($extensao);
$nomes[$controle] = rand().'-'.$nomes[$controle];
$destino = $diretorio.$nomes[$controle];
//move e guarda no banco
if(move_uploaded_file($arquivo['tmp_name'][$controle], $destino)){
$query = mysqli_query($conn, "INSERT INTO documentos (id, doc_1, contratante) VALUES('$id','$destino', '$logado');");
echo "Upload realizado com sucesso<br>";
}else{
echo "Erro ao realizar upload";
}
}
}
?>
Simples não é? Qualquer dúvida pode deixar os comentários na postagem, e reler os comentários no código acima. Obrigado pela atenção de vocês e sigam nossas redes sociais e se inscrevam em nosso canal.