Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa noite,
Fiz uma opção de upload de imagens para o meu site, conforme o link abaixo.
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>';
}
}
}
?>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
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()
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++;
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.