Ir para conteúdo

Arquivado

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

nknk

Cadastro com fotos, problemas com arquivos iguais

Recommended Posts

Eu tenho um cadasto e que nele tem dois campos para inserir foto eu gostaria de que qdo ele inserisse a foto ela fosse salva na pasta com um nome tipo foto1 e assim por diante, pq pode ser que dois usuarios tenha uma foto com o mesmo nome, ja que em cameras costumam salvar com nomes iguais, entao eu queria que alguem me passasse uma função para renomear um arquivo depois de feito upload ou na hora, para que qdo entrasse no banco de dados não tivesse conflito com nomes ja existentes.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A própria função move_uploaded_file() permite-lhe alterar o nome do arquivo.

http://br.php.net/manual/pt_BR/function.mo...loaded-file.php

 

move_uploaded_file ($_FILES['arq']['tmp_name'], "pasta/arquivo01.jpg");

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode usar a função date() para acrescentar seu valor ao nome da foto quando o usuário fizer o upload.Pode fazer um campo txt de formulário para o usuário nomear a foto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu não entendo muito de php, como eu faço faço a função renomear acrescentando data e horariotipoarquivo.exearquivo10122006-1458.exeif(!move_uploaded_file($arquivo) rename($arquivo)....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui! Recomendo a todos utilizarem essa função em arquivos de upload que vão para uma única pasta!$dat = date("dmyHi"); $file_name = $dat."_".$file_name;

Compartilhar este post


Link para o post
Compartilhar em outros sites

if(!move_uploaded_file($file, $dest)){echo "<div align=center><font size=1 face=verdana>Não foi possível fazer upload! Arquivo inválido.<br><br><a href=java script:history.back);>Voltar</a></font></div>";}Quando eu não adiciono arquivo aparece essa mensagem. Eu gostaria que qdo o não tivesse foto(qdo nao adicionassse), aparecesse uma foto padrão (tipo sem foto) ou seja, na tabela sql estaria gravado um arquivo padrão para envios sem fotos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se quando você não enviar foto está vindo essa mensagem, você tem que colocar no código que a opção de não enviar foto também é válida, entende?

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu entendi q esse if é para no caso de nao mandar arquivo, ai ele da a msg de erro, eu tinha pensando em ele armazenar um valor na tabela caso nao tivesse sido enviado um arquivo, armazenar uma foto escrita sem foto, mas nao está armazenando pq ?if(!move_uploaded_file($file, $dest)) {$sql = "INSERT INTO tabela (imagem) VALUES ('imagem/semfoto.jpg')"; }else {...}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas essa função só rodará se o arquivo não for enviado, e não quando estiver vazio.

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu uso a date('dmyhis');dependendo do caso acrescento a 2º casa do ip do cara tb, ai e dificil ter repetido rsrsrisso também evita problemas com acentos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

É uma boa o ip, mas para este caso acho que não haverá coincidências de nomes de fotos no mesmo segundo.Mas, para quem precisar, a sugestão do Hedi é boa.

Compartilhar este post


Link para o post
Compartilhar em outros sites

EU tb coloquei em segundos, como faz para colocar o ip ?fsphp, e qual é o código para ambos os caso ? ( arquivo não for enviado e vazio.)

Compartilhar este post


Link para o post
Compartilhar em outros sites

if(!move_uploaded_file($file, $dest) || empty($file)){$sql = "INSERT INTO tabela (imagem) VALUES ('imagem/semfoto.jpg')"; }else{...}A função empty() vai verificar se está vazio o arquivo. Tenta lá e posta o resultado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O cadastro é enviado. Mas ele não insere nada no campo img e img2, vou postar o codigo desde o começo. São dois arquivos para serem enviados. Na tabelasql o campo img e img2 são Not Null(Já tentei mudar e nada tb) // PRIMEIRO ARQUIVO $imgs = "imgs"; $dat = date("dmy_His"); //RENOMEIA C/ DATA E HORA $file_name = $dat."_".$file_name; $dest = $imgs."/".$file_name; //SEGUNDO ARQUIVO $img2s = "img2s"; $dat2 = date("dmy_His"); //RENOMEIA C/ DATA E HORA $file2_name = $dat2."_".$file2_name; $dest2 = $img2s."/".$file2_name; if(!move_uploaded_file($file, $dest) || empty($file)) { $semfoto = "img/semimagem.jpg"; $sql = "INSERT INTO tabela (img) VALUES ('$semfoto')"; } else { $img_enviada = "imgs/$file_name"; $sql = "INSERT INTO tabela (img) VALUES ('$img_enviada')"; } if(!move_uploaded_file($file2, $dest2) || empty($file2)) { $semfoto2 = "img2s/semfoto.jpg"; $sql = "INSERT INTO tabela (img2) VALUES ('$semfoto2')"; } else { $img2_enviada = "img2s/$file2_name"; $sql = "INSERT INTO tabela (img2) VALUES ('$img2_enviada')"; } $sql = "INSERT INTO tabela (outros campos) VALUES ('$outroscampos')"; if(mysql_query($sql)) {echo "<div align=center><font size=1 face=verdana><br><br>Enviado!!</font></div>";} else{echo "<div align=center><font size=1 face=verdana><br><br>Não foi possivel cadastrar!</font></div>";} }

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu uso a date('dmyhis');dependendo do caso acrescento a 2º casa do ip do cara tb, ai e dificil ter repetido rsrsrisso também evita problemas com acentos.

Eu nao acho mto bom colocar o ip, pq qualquer pessoa terá acesso ao ip, basta clicar em propriedades na foto. Embora muitos ips sejam variados, há possibilidades de causar um certo estrago. O ideal seria o ip ser cadastrado na tabela.o código para mostrar ip é esse mesmo ?$ip = @$REMOTE_ADDR;

Compartilhar este post


Link para o post
Compartilhar em outros sites
http://forum.imasters.com.br/public/style_emoticons/default/natal_smile.gif O Manual do PHP diz o seguinte:

Descriçãobool move_uploaded_file ( string nomedoarquivo, string destino )Esta função primeiro checa o arquivo informado nomedoarquivo é um arquivo válido uploadeado (significando que ele foi carregado pelo mecanismo do PHP de HTTP POST). Se o arquivo é válido, ele será movido para o nomedoarquivo dado pelo destino.Se nomedoarquivo não é um arquivo carregado válido, então não haverá nenhuma ação e move_uploaded_file() irá retornar FALSE.

Parece que a verificação que você tem que fazer é:if(move_uploaded_file($file, $dest) == FALSE){Registra do jeito que você quer que é sem foto.}Veja se é por aí e posta o resultado. B)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tinha me esquecido do tópico, segue ai o script que eu conseguir, obrigado aos que ajudaram, criticas e sugestões serão bem-vindasEu só coloquei para imagens em jpg, pq a função que gera tumbs só aceita jpg

$config = 262144; //tamanho máximo // sem imagens if ( !isset($_FILES['img']['name']) || empty($_FILES['img']['name']) ) { $name = "semimagem.jpg"; } else { //abre else // verifica tamanho if (filesize($_FILES['img']['tmp_name']) > $config ) { $erro[] = "Erro[Planfeto]: O Tamanho máximo do arquivo de imagem deve ser de 256 Kb."; } // verifica tipo if (substr($_FILES['img']['type'],-3) !="jpg" && substr($_FILES['img']['type'],-3) !="JPG" && substr($_FILES['img']['type'],-4) !="jpeg" && substr($_FILES['img']['type'],-4) !="JPEG") { $erro[] = "Erro[planfeto]: Só são permitidos arquivos de imagem do tipo JPG, JPEG."; } // validando foto if (ereg("[][><}{)(:;,!?*%@]", $_FILES['img']['name'])) { $erro[] = "Erro[Planfeto]: O arquivo contém caracteres inválidos."; } if(isset($erro)) { echo "<ul>"; for($i=0;$i<count($erro);$i++) { echo "<li>".$erro[$i]."</li>"; } echo("<a href=java script:history.go(-1)>voltar</a>"); echo "</ul>"; mysql_close(); exit; } else { $imagemenviada = "1"; //envia o arquivo modificando$num = date("dmy_His");$file=$_FILES['img']['name'];$f =explode (".", $file);$ext = end ($f);$name = "planfeto".$num.".".$ext;$up=move_uploaded_file($_FILES['img']['tmp_name'], "./imgs/".$name); } } //fecha else

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.