[Cascavel-pm] renomear imagem durante upload

Ricardo Stock ricardostock em bol.com.br
Segunda Junho 14 14:25:22 PDT 2010


Então, eu consegui...

mais ainda nao esta como eu quero.

Veja

#Renomeia o arquivo
    opendir(diretorio,$diretorio);
    my @dir=readdir(diretorio);
    closedir(diretorio);

    rename ("$diretorio/$dir[2]", "$diretorio/$imagem") || die "$!";

Estou tendo que gravar a imagem em um diretorio temporario,  e renomeando
ela, mas esta errado, pois corre o risco de ter outra imagem no diretorio, e
com isto causar erro.

----- Original Message ----- 
From: "Ronaldo Ferreira de Lima" <jimmy.tty em gmail.com>
To: "Cascavel Perl Mongers" <cascavel-pm em pm.org>
Sent: Monday, June 14, 2010 4:49 PM
Subject: Re: [Cascavel-pm] renomear imagem durante upload


Em 14 de junho de 2010 16:29, Ricardo Stock <ricardostock em bol.com.br>
escreveu:
> Boa tarde a todos
Boa tarde Ricardo,

>
> minha duvida seria como renomear um arquivo antes de gravar o mesmo, ou
> duratne.
Ficou estranho essa parte. Como renomear algo que não existe (ainda)?

>
> Estou fazendo um upload de arquivos, onde cada imagem, teria como nome o
> Id
> de registro. faço o upload normalmente, mas nao sei como fazer para trocar
> o
> nome do arquivo, pois nao quero que o usuario tenha que renomear o mesmo.
> Ex foto0001.jpg renomeia para ID.jpg
"ID.jpg" é literal ou "ID" seria um número serial?

>
> PS: Não quero gravar a imagem no banco.
>
>
> Veja o codigo
>
> sub Upload_Imagem {
>
> $| = 1;
>
> my $arquivo=param('arquivo'); #arquivo de imagem
> my $cliente=param('cliente'); #campo do tipo hidden com o id do cliente
>
> my ($byte,$buffer,$byteread);
> my $diretorio="/home/htdocs/clientes/nome_cliente/album";
>
>
>
> ## Pergunta, como renomear o arquivo de forma que fique id.jpg ??
> ## minha duvida é como renomear o arquivo pois na variavel $arquivo tenho
> o nome do arquivo e o conteudo,
> ## que é a propria imagem, como trocar somente nome
> ## tentei $novo_nome=$arquivo, mas gravo a imagem sem bytes nenhum.
>
> #Gravo o arquivo
> open (UPLOAD, ">$diretorio/$arquivo") || die "Erro $!";
porque não:
open( my $upload, q(>), qq($diretorio/ID.jpg) ) or die >...
???

> binmode UPLOAD;
>
> while ($byte = read($arquivo,$buffer,1024)) {
> $byteread += $byte;
> print UPLOAD $buffer;
>
> }
>
> close($arquivo);
> close(UPLOAD);
>
>
> #Grava o nome da imagem no banco
> #$sth=$dbh->prepare("update tb_cliente set imagem='$imagem' where
> id_cliente='$cliente'");
> #$sth->execute() || die "Erro ao registrar a imagem $DBI::errstr";
> #$sth->finish();
>
> print "a imagem foi carregada com sucesso.\n";
>
> }
>
Basicamente ou você descarrega a imagem em um arquivo aberto com o
nome correto, ou use o "rename" para mudar o nome depois, mas não
seria uma boa solução.

>
>
>
>
> Ricardo Stock
> ricardostock em bol.com.br
> _______________________________________________
> Cascavel-pm mailing list
> Cascavel-pm em pm.org
> http://mail.pm.org/mailman/listinfo/cascavel-pm
>
_______________________________________________
Cascavel-pm mailing list
Cascavel-pm em pm.org
http://mail.pm.org/mailman/listinfo/cascavel-pm



Mais detalhes sobre a lista de discussão Cascavel-pm