Hi

I want to bring some file download procedures into my CGI::Application. In the past (in normal CGI scripts) I have done this by using something like the following:

######
...

my $dl_file = '/path/to/something.ext';
my $file_name = 'something.ext';
open(FILE, "< $dl_file") or $log->logdie ("Couldn't open file $dl_file");
my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size, $atime,$mtime,$ctime,$blksize,$blocks) = stat(FILE);
binmode(FILE);

print "Content-type: application/octet-stream\n";
print "Content-length: $size\n";
print "Content-disposition: attachment;filename=$filename\n\n";

while(<FILE>) {
  print;
}

close FILE;

exit;
########

This works and enables one to wrap other stuff around the download of a file rather than just linking to the file directly.

I would like to do the same inside my CGI::App but of course I am not allowed to print directly to STDOUT so following this method I would have to suck in the whole file first before I return the output to be handled by run which causes an unacceptable delay if the file is large.

So... how to approach this? Is there a way I can push out a file as a download from within CGI::Application without having to suck the whole thing into memory first?

Cheers
Mark




#####  CGI::Application community mailing list  ################
##                                                            ##
##  To unsubscribe, or change your message delivery options,  ##
##  visit:  http://www.erlbaum.net/mailman/listinfo/cgiapp    ##
##                                                            ##
##  Web archive:   http://www.erlbaum.net/pipermail/cgiapp/   ##
##  Wiki:          http://cgiapp.erlbaum.net/                 ##
##                                                            ##
################################################################

Reply via email to