Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Thiago Ray

Chamada de Função

Recommended Posts

Exatamente, Victor! Transformei em função por isso!!

 

Tipo... eu tenho um formulário com 4 inputs do tipo file. Eu não posso utilizar o upload múltiplo porque são para envio de diferentes documentos.

beleza.. na página de action desse form eu recebo os quatro arquivos, coloco numa variável e em seguida chamo a mesma função de upload 4 vezes...

Quando chega na segunda vez, a função não recebe os parâmetros. Eu fui testando e descobri que se eu tentasse dar um print_r na variável do arquivo, ela vinha vazia! Assim como os outros parâmetros!

 

É verdade... me parece uma maneira meio porca de se fazer, mas não tive tempo pra pensar numa solução melhor!

 

Vou postar o arquivo aqui:

 

<?php
$comprovanteMatricula = $_FILES['comprovanteMatricula'];
$fotoRG = $_FILES['fotoRG'];
$fotoCPF = $_FILES['fotoCPF'];
$imagem = $_FILES['imagem'];
$idPessoa = $_GET['idp'];

validaImagem($comprovanteMatricula, $idPessoa, "comprovanteMatricula/", "fotoMatricula");
validaImagem($imagem, $idPessoa, "imagem/", "imagem");
validaImagem($fotoRG, $idPessoa, "comprovanteRG/", "fotoRG");
validaImagem($fotoCPF, $idPessoa, "comprovanteCPF/", "fotoCPF");


function validaImagem($file, $idPessoa, $pasta, $coluna){
/**
* Upload de Imagens com Segurança
*
* @author Alfred Reinold Baudisch
* @email alfred_baudisch@hotmail.com
* @date Jan 09, 2004
* @changes Jan 14, 2004 - v2.0
*/
// Prepara a variável caso o formulário tenha sido postado
$arquivo = isset($file) ? $file : FALSE;

$config = array();
// Tamano máximo da imagem, em bytes
$config["tamanho"] = 1024 * 1024 * 2;
// Largura Máxima, em pixels
$config["largura"] = 1024;
// Altura Máxima, em pixels
$config["altura"] = 768;
// Diretório onde a imagem será salva
$config["diretorio"] = $pasta;

if($arquivo)
{
	$erro = array();

	// Verifica o mime-type do arquivo para ver se é de imagem.
	// Caso fosse verificar a extensão do nome de arquivo, o código deveria ser:
	//
	// if(!eregi("\.(jpg|jpeg|bmp|gif|png){1}$", $arquivo["name"])) {
	//      $erro[] = "Arquivo em formato inválido! A imagem deve ser jpg, jpeg, bmp, gif ou png. Envie outro arquivo"; }
	//
	// Mas, o que ocorre é que alguns usuários mal-intencionados, podem pegar um vírus .exe e simplesmente mudar a extensão
	// para alguma das imagens e enviar. Então, não adiantaria em nada verificar a extensão do nome do arquivo.
	if(!eregi("^image\/(pjpeg|jpeg|png|gif|bmp)$", $arquivo["type"]))
	{
		$erro[] = "Arquivo em formato inválido! A imagem deve ser jpg, jpeg, bmp, gif ou png. Envie outro arquivo";
	}
	else
	{
		// Verifica tamanho do arquivo
		if($arquivo["size"] > $config["tamanho"])
		{
			$erro[] = "Arquivo em tamanho muito grande! A imagem deve ser de no máximo " . $config["tamanho"] . " bytes. Envie outro arquivo";
		}

		// Para verificar as dimensões da imagem
		$tamanhos = getimagesize($arquivo["tmp_name"]);

		// Verifica largura
		if($tamanhos[0] > $config["largura"])
		{
			$erro[] = "Largura da imagem não deve ultrapassar " . $config["largura"] . " pixels";
		}

		// Verifica altura
		if($tamanhos[1] > $config["altura"])
		{
			$erro[] = "Altura da imagem não deve ultrapassar " . $config["altura"] . " pixels";
		}
	}

	if(!sizeof($erro))
	{
		// Pega extensão do arquivo, o indice 1 do array conterá a extensão
		preg_match("/\.(gif|bmp|png|jpg|jpeg){1}$/i", $arquivo["name"], $ext);

		// Gera nome único para a imagem
		$imagem_nome = nome($ext[1]);

		// Caminho de onde a imagem ficará
		$imagem_dir = $config["diretorio"] . $imagem_nome;

		// Faz o upload da imagem
		move_uploaded_file($arquivo["tmp_name"], $imagem_dir);
	}
}
// Gera um nome para a imagem e verifica se já não existe, caso exista, gera outro nome e assim sucessivamente..
// Função Recursiva
function nome($extensao)
{
	global $config;

	// Gera um nome único para a imagem
	$temp = substr(md5(uniqid(time())), 0, 10);
	$imagem_nome = $temp . "." . $extensao;

	// Verifica se o arquivo já existe, caso positivo, chama essa função novamente
	if(file_exists($config["diretorio"] . $imagem_nome))
	{
		$imagem_nome = nome($extensao);
	}

	return $imagem_nome;
}
}
?>

 

Se alguém puder me ajuda, eu ficara muito agradecido!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.