Imagem(Nome de Arquivo)

como faço para que o upload de uma imagem não sobrescreva uma outra imagem no diretório, quando a imagem tem o mesmo nome…

Três anos depois: Estou com a mesma dúvida.

Boa noite.

Tem um lance de escolher criar diretório para cada registro, sendo que desta forma a imagem fica dentro.

Abraços

Você pode verificar se já existe o arquivo e renomea-lo

Exatamente!

Que isso pessoal… o cara vai criar um diretório pra cada imagem? Inviável a manutenção posterior disso. Como ja disse em post´s anteriores, upload, calendário, relatório… tem que fazer por fora. Infelizmente o SC é aleijado nesses tipos de aplicações.

Utilizo o fancyupload se alguém quiser ajudo a implementar, na verdade não tem segredo, é só implementar utilizando a app do tipo blank no SC e configurar o arquivo script.php que é quem faz o trabalho de verdade.

se alguém tiver interesse em vê-lo funcionando por favor mande uma MP que disponibilizo acesso a versão demo do meu sistema para teste.

Estou mandando versões novas de arquivos se der problema de acesso é devido ao upload.

Um abraço a todos!

É, deixar um arquivo em cada pasta é uma ideia, mas acho que, realmente, fica inviável devido a organização (ou desorganização.rs). Será feito upload constante de grande quantidade de arquivos neste sistema.

Quanto a renomear, pensei nisso, mas estou um pouco confusa sobre como fazer, pois ao fazer o upload (antes de enviar o form) o arquivo já sobe para uma pasta temporária do SC (e com um nome diferente do original). E depois de inserir, ele pode já substituiu a imagem com o mesmo nome. Bom, vou pensar aqui direitinho.

saulobborges, achei bem interessante este Fancyupload. Como eu já fiz todos os formulários e diversas configurações para usar o upload pelo SC, vou deixar assim mesmo desta vez, mas da próxima, irei usar este aplicativo.
PS.: Muito legal este SinistroWeb.

Vou ver aqui se consigo o lance de renomear e depois posto as novidades.

Valeu pessoal!

renomeie na beforeinsert ou beforeupdatte, o arquvo já vai estar no seu devido lugar.

Obrigada, Haroldo.

Eu pensei que no beforeinset o campo estaria com o nome temporário.

Bom, de qualquer forma, eu resolvi renomear todos os arquivos para [nome original] + [id da tabela] (no afterinsert mesmo) e então dei um upload no nome do arquivo da tabela. Deu certo aqui.

Obrigada a todos.

Eu possuo um sistema com mais de 4.000 registros, com diretórios para imagens e nunca tive que fazer nenhuma manutenção neste sentido. Já migrei o sistema de servidor, sem nenhum problema. Pelo contrário, facilita uma possível manutenção, pois cada registro pode ter várias imagens em seu próprio diretório.

“Se a vida te der um limão, faça uma limonada ou reclame que está azedo”
“Um copo está meio cheio ou meio vazio?”

Tudo depende do ponto de vista de cada um. Apenas dei uma idéia que resolveu o meu problema.

Abraços.

Eita…pra mim ta transbordando o copo!!! Calma aí, ninguém disse que sua idéia era ruim apenas que talvez não se aplicasse a esse caso… meu sistema também salva várias imagens em um mesmo diretório… mas você disse pra usar a criação de diretório pra cada arquivo enviado…isso não é viável!!! Me corrijam se eu estiver errado!!!

Já que o tópico virou post de provérbios populares aí vão alguns muito bons !!

“A morte do homem começa no instante que ela desiste de aprender.”
“Aquilo que você mais sabe ensinar, é aquilo que você mais precisa aprender.”
"Ninguém é tão grande que não possa aprender, nem tão pequeno que não possa ensinar. "
“O conhecimento está a serviço da necessidade de viver.”
“Os verdadeiros analfabetos são os que aprenderam a ler e não lêem” (ou não entendem o que lêem).
“Sábio é aquele que conhece os limites da própria ignorância.”
“Você aprendeu alguma coisa. Isto sempre parece, à primeira vista, como se tivesse perdido uma coisa!!” Não se iluda!!

Não lembro os autores…!!
Mas me ajudaram muito na vida!

Posso dar minha opinião?

Não vou me atentar ao sc diretamente, mas sim a sistemas operacionais, a arquivamento em disco, a fragmentação de dados.

Como todos devem saber, para uma informação ser acessada no disco, precisa-se de um endereço, quanto mais complexo essa agenda de endereços, mais lento fica a localização desse arquivo, e como todos devem saber também para isso servem os caches, para armazenarem em memória volátil os últimos endereços acessados, para evitar o acesso físico desse endereço no disco, quanto maior o cache mais performance. então imaginem, uma pasta para cada imagem, cada imagem tem seu endereço, e o endereço do seu diretório, se for um diretório só, é apenas um endereço em cache de diretório para vários de imagens, mas se for um diretório para cada imagem, são dois endereços utilizando cache, logo o cache se esgota, aí vem o swap de disco, e por aí vai.

Então super lotar o disco com diretórios, que são frequentemente acessados (basta uma única consulta do sc a tabela que guarda essas imagens) vai consumir cache e disco demais, e todo gargalo sabemos hoje está em disco.

Pensem bem em utilizar essa opção de um diretório para cada imagem.

Aí vai alguns provérbios, meus mesmo:

“Não deixem a preguiça os dominarem, pode ser mais fácil hoje, mas amanhã estarão mais velhos e cansados, e terão que trabalhar o dobro fazendo o que podiam ter feito hoje”.

“O que preferem na sua sala? Um latão de lixo com todos todos os papeis picados ou um monte de latinhas de lixo uma para cada papelzinho espalhados pela sala?”

“CONHECIMENTO DIMINUI LIMITAÇÕES!”

Não precisa ficar bravo, não… apesar da minha idéia não servir para todos, chamou a atenção de sua crítica e de sua idéia, após anos sem reposta para esse post.

Abraços

Pois é…mas em 2009 eu não usava o SC ainda, ou você acha que eu sou maluco pra ficar vasculhando posts antigos sem resposta, tento ajudar quando o tempo me esta disponível.

Minha resposta foi para a Natalia, eu não critiquei você, e nem fiquei bravo, aliás quem parece que ficou magoado foi você, eu só expressei minha opinião, que pelo que parece é igual a de alguns aqui do fórum.

Bye bye…

Sei que esse post é antigo mas resolvi dessa maneira (onBefereInsert e onBeforeUpdate) :

$diretorio = “C:/Program Files (x86)/NetMake/v6/wwwroot/scriptcase/file/docdespesavendedor/”;

$newFile = removerAcento({ANEXO_DESP}); // função para remover os acentos

rename($diretorio.{NDOC_DESP}."/".{ANEXO_DESP},$diretorio.{NDOC_DESP}."/".$newFile);

{ANEXO_DESP} = $newFile;

Complementando meu post anterior, tive um problema quando o usuário insere um arquivo com mais de um espaço em seu nome, segue a solução:

if(!empty({ANEXO_DESP}))
{
$espacos = stristr({ANEXO_DESP}, ’ ');

if(!empty($espacos))
{
	sc_error_message("O nome do anexo inserido contém mais de um espaço em seu nome. 
            Renomeie o arquivo e deixe apenas um espaço antes de continuar");
	sc_error_exit();
}	

$diretorio   = "C:/Program Files (x86)/NetMake/v6/wwwroot/scriptcase/file/docdespesavendedor/";

$newFile = removerAcento({ANEXO_DESP});

rename($diretorio.{NDOC_DESP}."/".{ANEXO_DESP},$diretorio.{NDOC_DESP}."/".$newFile);

{ANEXO_DESP} = $newFile;

}