Ir para conteúdo

POWERED BY:

Arquivado

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

johnhey

Nome aleatório

Recommended Posts

Boa noite,

 

Fiz uma opção de upload de imagens para o meu site, conforme o link abaixo.

 

https://youtu.be/0BzYNHQx35g

 

esta a funcionar na perfeição.

 

Mas gostaria que o nome das imagens fossem aleatórios, exemplo: foto01, foto02, foto03.....

 

Segue abaixo o código a funcionar.

<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="fotos[]" multiple>
<input type="submit" name="upload" value="Upload">
</form>
</div>
<?php
if(isset($_POST['upload'])){
	
	//Informações das imagens
	$file = $_FILES['fotos'];
	$numfotos = count(array_filter($file['name']));
	
	//Informações da pasta
	$pasta = 'imagens/upload';
	
	//Requisitos
	$permite = array('image/jpeg', 'image/png');
	$maxSize = 1024 * 1024 * 5;
	
	//Mensagem
	$msg = array();
	$erro = array(
		1=> 'O arquivo no upload é mairo do que o limite permitido em upload máximo',
		2=>'O arquivo ultrapassa o limite de tamanho máximo por imagem',
		3=> 'O upload do arquivo foi feito parcialmente',
		4=> 'Não foi feito o upload do arquivo'
	);
	
	if ($numfotos <= 0)
		echo 'Selecione uma ou mais imagem!';
	else{
		for ($i = 0; $i < $numfotos; $i++){
			$name = $file['name'][$i];
			$type = $file['type'][$i];
			$size = $file['size'][$i];
			$error = $file['error'][$i];
			$tmp = $file['tmp_name'][$i];
			
			$extensao = @end(explode('.', $name));
			$novonome = rand().".$extensao";
			
			if($error !=0)
				$msg[] = "<b> $name: </b>".$errorMsg[$error];
			else if (!in_array($type, $permite))
				$msg[] = "<b> $name: </b> Erro imagem não suportada!";
			else if($size > $maxSize)
				$msg[] = "<b> $name:</b> Erro imagem ultrapassa o limite de 5 MB";
			else{
				if(move_uploaded_file($tmp, $pasta."/".$novonome))
					$msg[] = "<b>$name :</b> Upload Realizado com Sucesso!";
				else
					$msg[] = "<b>$name :</b> Desculpe! Ocorreu um erro...";
				
				}
				
				foreach($msg as $pop)
					echo $pop.'<br>';
		}
	}
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aleatório ou sequencial?

 

Aleatórios eles já são, pois você usa rand():

 

$novonome = rand().".$extensao";

 

(esse aleatório pode se repetir. Sugiro usar uniqid() para evitar colisão)

 

Se quiser sequencial, precisará pegar o nome do arquivo mais recente e extrair a parte numérica. Depois é só somar uma unidade e terá o novo nome.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa noite Beraldo, eu não sabia muito bem como expressar.

 

Mas o que preciso é sequencial, como mencionei no exemplo.

 

Gostaria que ficasse:

 

foto01

foto02

foto03

 

e assim por diante

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então faça o que citei aantes:

 

Se quiser sequencial, precisará pegar o nome do arquivo mais recente e extrair a parte numérica. Depois é só somar uma unidade e terá o novo nome.

 

Veja as Funções de filesystem, em especial scandir() e glob()

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui resolver da seguinte forma, era bem simples, mas às vezes não conseguimos ver.

 

$extensao = @end(explode('.', $name));

$novonome = foto.sprintf('%02s',$contador)

$nomecompleto = $novonome.".$extensao";

$contador++;

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.