[SP-pm] convertendo zip para base64

Renato Santos renato.cron at gmail.com
Sun Sep 5 08:21:21 PDT 2010


Se for pra enviar por e-mail você pode usar o MIME::Lite

Assim, ele já se vira para converter pra base64: "You don't need to
worry about encoding your message data: this module will do that for
you. It handles the 5 standard MIME encodings."
Mas parece que seu problema é na hora do <$a>
Se não me engano, o perl vai ler o "arquivo" por \n ou \r\n, depende,
E isso pode estar ferrando com voce.
Tente usar o binmode($a) depois do open.

Boa sorte.

2010/9/5 eliane franco <elidmfranco at gmail.com>
>
> ola pessoal,
>
> Estou fazendo um programa que coleta um arquivo.zip e envia via smtp como anexo.
> Ao tentar abrir o anexo que chegou por email, ocorre o seguinte erro:
> End-of-central-directory signature not found. Either this file is not a Zip file, or it constitutes one disk of a multi-part Zip
> Sobre o código:
> use MIME::Base64;
> use Socket;
> Para abrir o arquivo:
>   open $a, "<$fname" or exec close_error (" $fname" );
>         binmode $a;
> Para ler os dados, estou usando readline e encaminhando para o encode
> $ans='';
>          while (<$a>) {
>          $ans=$ans.(encode_base64($_));
>                 }
>         close($a)       or die "close: $!" ;
>         return $ans;
> E o conteúdo dessa variável é encaminhada via socket.
> Eu acho que meu erro está na conversão para Base64, pois já fiz teste com um arquivo já convertido e o zip abriu corretamente.
> Alguém já obteve o erro acima?
> Obrigada pela ajuda.
> []'s
> Eliane
>
>
>
>
> _______________________________________________
> SaoPaulo-pm mailing list
> SaoPaulo-pm at pm.org
> http://mail.pm.org/mailman/listinfo/saopaulo-pm



--
Renato Santos
http://www.renatocron.com/blog/


More information about the SaoPaulo-pm mailing list