blob: d837ead6e55bb6ca1e5e0e16a1f524f7a79b54c3 [file] [log] [blame]
#!/usr/bin/perl -w
use strict;
use CGI;
use File::stat;
use constant CHUNK_SIZE_BYTES => 256;
my $query = new CGI;
my $filename = $query->param('name');
my $filesize = stat($filename)->size;
my $loadtime = $query->param('loadtime'); # in seconds
my $chunkcount = $filesize / CHUNK_SIZE_BYTES;
my $chunkdelay = $loadtime / $chunkcount;
my $mimetype = $query->param('mimetype');
# flush the buffers after each print
select (STDOUT);
$| = 1;
print "Content-Type: ${mimetype}\r\n";
print "Expires: Thu, 01 Dec 2003 16:00:00 GMT\r\n";
print "Cache-Control: no-store, no-cache, must-revalidate\r\n";
print "Pragma: no-cache\r\n";
print "\r\n";
open(FILE, $filename) or die;
binmode FILE;
my ($data, $n);
my $total = 0;
while (($n = read FILE, $data, CHUNK_SIZE_BYTES) != 0) {
print $data;
$total += $n;
if ($total >= $filesize) {
last;
}
# Throttle if there is some.
if ($chunkdelay > 0) {
select(undef, undef, undef, $chunkdelay);
}
}
close(FILE);