I was able to upload files with my form containing just one input and file type. However, I came up with the need to make a category registration form that sends the category data to the database and the image to the server with the name being the id. From here the problem arose, follow my code at the moment:
<form method="POST" action="cadascatraiz.php" enctype="multipart/form-data">
<div class="form-group">
<div class="form-label-group">
<input type="text" name="inputCatRaiz" id="inputCatRaiz" class="form-control" placeholder="Categoria Raiz" required="required" autofocus="autofocus">
<label for="inputCatRaiz">Categoria Raiz</label>
</div>
</div>
<br>
<div class="form-group">
<label>Arquivo:</label>
<input type="file" name="arquivo" />
</div>
<input type="submit" class="btn btn-primary btn-block" value="Cadastrar">
<?php
include 'conexao.php';
$categoria = htmlspecialchars(addslashes($_POST['inputCatRaiz']));
$sql = "INSERT INTO tb_categoria (categoria) VALUES ('$categoria') ";
if($con->query($sql)===TRUE){
//código de um repósitorio
// Pasta onde o arquivo vai ser salvo
$_UP['pasta'] = '../eu/categorias/';
// Tamanho máximo do arquivo (em Bytes)
$_UP['tamanho'] = 1024 * 1024 * 2; // 2Mb
// Array com as extensões permitidas
$_UP['extensoes'] = array('png', 'gif', 'svg');
// Renomeia o arquivo? (Se true, o arquivo será salvo como .jpg e um nome único)
$_UP['renomeia'] = TRUE;
// Array com os tipos de erros de upload do PHP
$_UP['erros'][0] = 'Não houve erro';
$_UP['erros'][1] = 'O arquivo no upload é maior do que o limite do PHP';
$_UP['erros'][2] = 'O arquivo ultrapassa o limite de tamanho especifiado no HTML';
$_UP['erros'][3] = 'O upload do arquivo foi feito parcialmente';
$_UP['erros'][4] = 'Não foi feito o upload do arquivo';
// Verifica se houve algum erro com o upload. Se sim, exibe a mensagem do erro
if ($_FILES['arquivo']['error'] != 0) {
die("Não foi possível fazer o upload, erro:<br />" . $_UP['erros'][$_FILES['arquivo']['error']]);
exit; // Para a execução do script
}
// Caso script chegue a esse ponto, não houve erro com o upload e o PHP pode continuar
// Faz a verificação da extensão do arquivo
$extensao = strtolower(end(explode('.', $_FILES['arquivo']['name'])));
if (array_search($extensao, $_UP['extensoes']) === false) {
echo "Por favor, envie arquivos com as seguintes extensões: jpg, png ou gif";
}
// Faz a verificação do tamanho do arquivo
else if ($_UP['tamanho'] < $_FILES['arquivo']['size']) {
echo "O arquivo enviado é muito grande, envie arquivos de até 2Mb.";
}
// O arquivo passou em todas as verificações, hora de tentar movê-lo para a pasta
else {
// Primeiro verifica se deve trocar o nome do arquivo
if ($_UP['renomeia'] == true) {
// Cria um nome baseado no UNIX TIMESTAMP atual e com extensão .jpg
$sql = "SELECT id FROM tb_categoria WHERE categoria = '$categoria'";
$rolo = $con->query($sql)->fetch_assoc();
$nome_final = rolo['id'].'.jpg';
} else {
// Mantém o nome original do arquivo
$nome_final = $_FILES['arquivo']['name'];
}
// Depois verifica se é possível mover o arquivo para a pasta escolhida
if (move_uploaded_file($_FILES['arquivo']['tmp_name'], $_UP['pasta'] . $nome_final)) {
// Upload efetuado com sucesso, exibe uma mensagem e um link para o arquivo
echo "Upload efetuado com sucesso!";
echo '<br /><a href="' . $_UP['pasta'] . $nome_final . '">Clique aqui para acessar o arquivo</a>';
} else {
// Não foi possível fazer o upload, provavelmente a pasta está incorreta
echo "Não foi possível enviar o arquivo, tente novamente";
}
}
$_SESSION['cadas_cat']='OK';
}else{
$_SESSION['cadas_cat']='ERRO';
}
$con->close();
header("location:novacatraiz.php");
?>