Creating a Zip file from HTTP data stream

Y

Yasir Zaheer

Hi all,

I am facing some problems in creating a zip file coming as HTTP data
stream in perl running over Linux RedHat 4. The actual scenario is
that I am recieving a data stream send by a .Net application running
on windows XP that sends the stream by just reading and sending all
the bytes from a zip file. My logs displays all the data recieved in
the varialbe $$params{LOG} on console but i am unable to create a zip
file out of that. Any help in this regards will be appreciated.


use core qw ( CGI_USER ) ;
use utils::MailMime;
$core::dbh->ensureWebAlive();
my $osysconfig = sysconfig->new({MINIMAL => '1'});
use Archive::Zip qw( :ERROR_CODES :CONSTANTS );

my $params = CGI::Vars();
use Archive::Zip qw( :ERROR_CODES );
#print "Content-type:text/html\n\n";
print header;

my $MAILTO = '(e-mail address removed)';


my $MAILFROM = '(e-mail address removed)';

my $smtp = $osysconfig->GetSMTPServer();
my $port = $osysconfig->GetSMTPServerPort();
my $host = hostname();
my $omailer = MailMime->new( { SMTPSERVER=> $smtp, SMTPSERVERPORT =>
$port } );

# $$params{LOG} ---- this is the binary zipped file which i have to
attached with email.
if (($$params{LOG}) and (not $$params{REMOTEFILE}))
{
$file = '/tmp/tmp.zip' ;
#use Archive::Zip;

#my $zip = new Archive::Zip;

#my $data = "$$params{LOG}";

#$zip->addString($data,"LOG");
#$zip->writeToFileNamed($$params{LOG});
#print FILE $$params{LOG};
#close FILE;

#give read write permission to all
#`chmod 666 $file`;
my $fh;
#open ( $fh , '>', $file ) or $core::logger->Die( 'Error opening
file', $@);

#print $fh "$$params{LOG}";
#if (defined $$params{LOG});
#print $fh $$params{SCREENSHOT}
#if (defined $$params{SCREENSHOT});
close $fh;

}

my $text = "Application logs are attached\n\nDetails of the sender:\n
\nLogin:$$params{LOGIN} \nServer Address: $host";
$text .= "\n\n$$params{USERTEXT}" if ( $$params{USERTEXT} );
my %Ret;

if (($$params{LOG}) and (not $$params{REMOTEFILE}))
{
eval
{
%Ret = $omailer->SendFile({

From => $MAILFROM,
To => $MAILTO,
Subject => "Application Report from $$params{LOGIN} on $host",
Text => $text ,
Path => $file,
Type => 'binary'
}) or die "Could not send mail [$!]";
};
}
if ( $@ )
{
print "$@\n";
}
else
{
print "1";
}






regards,
Yasir.
 
R

RedGrittyBrick

Yasir said:
Hi all,

I am facing some problems in creating a zip file coming as HTTP data
stream in perl running over Linux RedHat 4. The actual scenario is
that I am recieving a data stream send by a .Net application running
on windows XP that sends the stream by just reading and sending all
the bytes from a zip file. My logs displays all the data recieved in
the varialbe $$params{LOG} on console but i am unable to create a zip
file out of that. Any help in this regards will be appreciated.

....
use Archive::Zip qw( :ERROR_CODES :CONSTANTS ); ....
use Archive::Zip qw( :ERROR_CODES );
....

Is that real code?

If you have the all the bytes of a zip file in $$params{LOG}, can't you
simply 'print' that variable to a binary file without using Archive::Zip?

By the way, wouldn't that be better written as $params->{'LOG'}?
Are you using the 'strict' and 'warnings' pragmas?
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,763
Messages
2,569,563
Members
45,039
Latest member
CasimiraVa

Latest Threads

Top