Renomear Arquivo [+evitar] [+conflito]

105 views
Skip to first unread message

Renato Costallat

unread,
Feb 7, 2011, 10:07:21 AM2/7/11
to Lista de PHP
Olá a todos,

Me deparei com a seguinte situação e queria saber o que vocês fazem pare contornar ela!

Estou montando uma galeria de arquivos(fotos) e os usuários que fazem upload delas!

No banco cada imagem está relacionado seu respectivo album! No servidor todas vão ficar na mesma pasta!

O problema está que eu teria que fazer algum script para renomear a foto para um tal nome que não desse conflito com outra! Tipo o album do orkut, que quando você salva a foto vem aquele nome tudo louco lá! Pensei em colocar o id do album, mas isso evita conflito com fotos do outros albuns, mas não evita o conflito com fotos do mesmo album!

Estava pensando em algo como o MD5 assim que ele gera umas informações baseadas nos dados!

Se tiver algo relacionado na lista me desculpe, mas não tenho nem idéia pelo que procurar!

Vlws!!

Abraços!

Rafael Galdencio

unread,
Feb 7, 2011, 11:23:58 AM2/7/11
to list...@googlegroups.com
time() + nome_da_foto.jpg

--
Rafael Galdencio de Faria Silva
Desenvolvedor Web


--
============================================================
LEIAM SEMPRE AS REGRAS DA LISTA:
http://groups.google.com.br/group/listaphp/web/regras-da-lista-php
--
LISTA PHP > http://groups.google.com.br/group/listaphp
--
REVISTA PHP > http://www.revistaphp.com.br
--
AJAX-BRASIL > http://groups.google.com/group/ajax-brasil
--
PYTHON-GOOGLE > http://groups.google.com.br/group/python-google
--
DOTNET-BRASIL > http://groups.google.com.br/group/dotnet_br
============================================================

Yuri Teixeira

unread,
Feb 7, 2011, 11:48:52 AM2/7/11
to list...@googlegroups.com
Tente assim:

Crie uma tabela simples, chamada "arquivos", contendo os campos ID (primary key, bigint, auto-increment) e um chamado NOME_ORIGINAL. 

Quando for salvar a imagem no servidor, crie um registro nessa tabela, salvando o nome original do arquivo, obtenha o id gerado, e salve no servidor com esse nome (ex: arquivo chamava xxx.jpg, vc criou um registro na tabela e portanto agora, vc tem o registro [1, "xxx.jpg"], e no filesystem o nome da imagem ficou como 1, sem extensao mesmo).

Quando precisar fazer download da imagem, simplesmente pesquise no banco pelo id e vc obterá o nome original da imagem. Aí é só setar o download para que a imagem tenha o nome orignal, obtido nessa última consulta, e pronto, não será mais necessário retornar uma imagem com um código gigantesco.

Att,

Yuri Teixeira.



Rubens Takiguti Ribeiro

unread,
Feb 7, 2011, 11:50:55 AM2/7/11
to list...@googlegroups.com
Olá, Renato,

Existem várias possibilidades:

1 - Você pode gerar um nome único com o código do álbum, algum
símbolo, e um número sequencial da foto no álbum. Ao submeter uma foto
de um álbum, você verifica qual é o último número e cria o próximo.

2 - Se no seu banco você tem um registro para cada foto, a tabela pode
ter um auto_increment único. Você pode usar este nome como nome do
arquivo.

3 - Você pode usar a função tempnam para gerar um nome único no
diretório em questão. Como prefixo, você pode usar o código do álbum,
por exemplo.

Rubens Takiguti Ribeiro
TecnoLivre - Cooperativa de Tecnologia e Soluções Livres
Bacharel em Ciência da Computação - UFLA
Zend Certified Engineer - PHP 5
http://www.rubsphp.blogspot.com/


Em 7 de fevereiro de 2011 13:07, Renato Costallat
<renato....@gmail.com> escreveu:

OzzyLords

unread,
Feb 7, 2011, 12:03:04 PM2/7/11
to list...@googlegroups.com
o ideal seria com banco de dados na minha opiniao,
mas uma alternativa eh fazer mais ou menos assim
 
$renomear_arquivo = md5(date('d/m/Y H:i:s'));
 
$nome_arquivo = substr($renomear_arquivo, 3,6).'-nomeuser.jpg';
 
trabalha nessa linha ai, MUITO dificil ter nomes duplicados!!!!!

Eduardo

unread,
Feb 7, 2011, 12:12:26 PM2/7/11
to list...@googlegroups.com
Eu costumo gravar no banco a imagem, e gravar com o nome...

prefixo (geralmente o mesmo do banco), ano mes dia, e uma contagem do número da foto, com 5 dígitos.

Ex.es_20110205_00001.jpg

eu verifico o número da última cadastrada, gero o nome, verifico se já existe, se existe, tento 1 número acima... Nunca me deu problemas aqui...

Eduardo

Weydson Cleyton

unread,
Feb 7, 2011, 12:25:19 PM2/7/11
to list...@googlegroups.com
Porque você nãi usa o nome das imagens com um MD ou simplesmente sei la

$nomeFoto = time();

eu uso isso... + MD5 so pra ter um nome que não se repita.

Em 7 de fevereiro de 2011 13:07, Renato Costallat <renato....@gmail.com> escreveu:
--
============================================================
LEIAM SEMPRE AS REGRAS DA LISTA:
http://groups.google.com.br/group/listaphp/web/regras-da-lista-php
--
LISTA PHP > http://groups.google.com.br/group/listaphp
--
REVISTA PHP > http://www.revistaphp.com.br
--
AJAX-BRASIL > http://groups.google.com/group/ajax-brasil
--
PYTHON-GOOGLE > http://groups.google.com.br/group/python-google
--
DOTNET-BRASIL > http://groups.google.com.br/group/dotnet_br
============================================================



--





Linux Project
Milhões de mentes abertas não podem estar enganadas

Renato Costallat

unread,
Feb 8, 2011, 8:01:43 AM2/8/11
to list...@googlegroups.com
Acho que vou fazer um combo aqui, com data + id album + id foto , ai fica tanto como "histórico da foto" como evitar conflito!

Acho mais seguro usar 2 ou mais combinações pois é upload multiplo com ajax, então a transferência das fotos se iniciam todas ao mesmo tempo!

Vamos ver, vou testar aqui as combinações que foram propostas!


Obrigado pelo ajuda!

Abraços!

2011/2/7 Weydson Cleyton <wey...@gmail.com>

filipe cifali

unread,
Feb 9, 2011, 5:30:44 AM2/9/11
to list...@googlegroups.com

Uma coisa importAnte também é dividir em pastas por mês no mínimo, não vai querer corromper o sistema de arquivos do servidor né... Já vi casos do scriptcase bugar os arquivos temporários e danificar o hd fisicamente.

Em 08/02/2011 11:06, "Renato Costallat" <renato....@gmail.com>escreveu:

Acho que vou fazer um combo aqui, com data + id album + id foto , ai fica tanto como "histórico da foto" como evitar conflito!

Acho mais seguro usar 2 ou mais combinações pois é upload multiplo com ajax, então a transferência das fotos se iniciam todas ao mesmo tempo!

Vamos ver, vou testar aqui as combinações que foram propostas!


Obrigado pelo ajuda!

Abraços!

2011/2/7 Weydson Cleyton <wey...@gmail.com>


>
> Porque você nãi usa o nome das imagens com um MD ou simplesmente sei la
>

> $nomeFoto = time();...




--
============================================================
LEIAM SEMPRE AS REGRAS DA LISTA:...

Reply all
Reply to author
Forward
0 new messages