### read file and send my $file_size = -s qq{./.tmp/$dir/$file}; print CGI::header({ 'content-type' => 'application/zip', 'content-length' => $file_size, 'content-disposition' => qq{attachment; filename=$file} }); open my $ZIP, qq{./.tmp/$dir/$file} or do { $self->_generate_response({ code => 500, message => qq{file $file not found: $!}, }); return; }; my $buffer; while(read $ZIP,$buffer,16384) { print $buffer; } close $ZIP;