0
How do I validate the file size, the image dimensions (Size) and the file type that will be used in Upload, before Submit ?
To upload I use the function below in PHP, but the validation happens only after sending the form through the POST, what causes an upset to the user because of the refresh on the page.
//****** Enviando a imagem através de Upload *****//
// colocando um nome aleatorio na imagem que será utilizada no upload
$nomealeatorio = md5(uniqid(time())) . strrchr($_FILES['imagem']['name'], ".");
// função para verificar se existe um diretorio padrão cadastrado (utilizado para fins de desenvolvimento);
diretorio();
if(Empty($dir)){
$upload['diretorio'] = $_SERVER['DOCUMENT_ROOT'].'/images/fotos/'.$nomealeatorio;
// diretorio que será gravado no banco
$upload['caminho'] = '/images/fotos/'.$nomealeatorio;
}else{
$upload['diretorio'] = $_SERVER['DOCUMENT_ROOT'].'/'.$dir.'/images/fotos/'.$nomealeatorio;
// diretorio que será gravado no banco
$upload['caminho'] = '/'.$dir.'/images/fotos/'.$nomealeatorio;
}
// tamanho do arquivo em bytes
$upload['tamanho'] = 1024 * 1024 * 2; // 2mb
// extensao do arquivo
$upload['extensoes'] = array('jpg', 'png', 'jpeg');
// salvando nome do arquivo na variavel
$img = $_FILES['imagem']['tmp_name'];
// obtendo a dimensao do arquivo
$upload['dimensao'] = getimagesize($img);
// tratando os erros do Upload através do PHP
$upload['erro'][0] = 'Não houve Erro';
$upload['erro'][1] = 'O Arquivo é maior que o limite do Php, tente novamente com um arquivo menor ou contate o Administrador.';
$upload['erro'][2] = 'O Arquivo é maior que o limite do Html, tente novamente com um arquivo menor ou contate o Administrador.';
$upload['erro'][3] = 'Erro upload realizado parcialmente';
$upload['erro'][4] = 'Upload não realizado, tente novamente ou contate o Administrador do Sistema';
// verifica se houve erro no upload, se existir exibe a mensagem e aborta a operação;
if ($_FILES['imagem']['error'] != 0) {
die("Não foi possivel fazer o upload do arquivo, " . $upload['erro'][$_FILES['imagem']['error']]);
exit;
}
// repassando o nome do arquivo para a variavel caminho
$caminho = $_FILES['imagem']['name'];
// dividindo uma string em strings
$separador = explode('.', $caminho);
// transformando os valores em minusculo
$valida_extensao = strtolower(end($separador));
// ****************************************************Verificando o tamanho da imagem **************************************************//
if(($upload['dimensao'][0] < 250) or ($upload['dimensao'][1] < 250)) {
echo('Não foi possivel fazer o upload do arquivo, para enviar um arquivo é necessário que ele seja imagem e que tenha mais de 250px de largura e 250px de altura, tente novamente ou contate o Administrador');
exit;
}
// ****************************************************Verificando a extensão***************************************************************//
if (array_search($valida_extensao, $upload['extensoes']) === false) {
echo'Atenção, Esse formato de arquivo não é permitido, envie arquivos do tipo, JPG, JPEG, PNG. O Upload não será realizado, Operação Abortada';
exit;
}
// ****************************************************verificando o tamanho do arquivo**************************************************//
if ($upload['tamanho'] < $_FILES['imagem']['size']) {
echo'Atenção, O Arquivo enviado excede o limite de 2MB permitido, reduza o arquivo ou envie outro de até 2 Mb. O Upload não será realizado, Operação Abortada';
}
// ****************************************************Verificando se é possivel mover o arquivo****************************************//
if(move_uploaded_file($_FILES['imagem']['tmp_name'], $upload['diretorio'])) {
//******************************************************Realizando o Insert na Tabela ***************************************************//
// Instanciando a Classe Responsável por Exibir Mensagens de Alerta para os usuários
$msg = new Mensagem_alerta();
// instancia a classe Fotos.
$fotos = new Fotos();
// repassa os parametros para o objeto
$fotos->setTitulo($titulo);
$fotos->setGooglemaps($googlemaps);
$fotos->setTipo($tipo);
$fotos->setTelefone($telefone_fixo);
$fotos->setEmail($email);
$fotos->setCaminho_foto($upload['caminho']);
// iniciando o metodo de Inserir
$objeto->FotosInsert($fotos);
// mensagem de erro para o usuario
echo" <div class='alert alert-success text-center' id='mensagem'role='alert'>";
echo $msg->msgcadastrosucesso();
echo"</div>";
}
else {
echo'Falha no Upload, se o problema Persistir, contate o Administrador';
}
thank you very much! helped me in what I needed!
– Diego Lela