Hello again
I'm still having troubles delivering my pdf-files ... I'm using the
code-snippets Geoffrey Young gave me, but i need to use an internal
redirect, because i provide the files with better (longer) filenames. I
can't find any tutorials or example-code for it, so I hope you guys can
help me ...
so what I'm actually doing is:
initial request:
- check permissions
- search the filename of the filesystem
- if it is not a static file: generate & deliever file
- otherwise: make an internal redirect to the specific file
handle the internal redirect:
- generating header
- deliver file (if necessary with byterange ...)
this looks approx. like this:
if ($r->is_initial_req) {
if (&static ()) {
$r->internal_redirect (&newfilename);
}
else {
$r->send_header ();
$r->send_fd($fh);
};
}
else {
$s->headers_out->set('Accept-Ranges' => 'bytes');
$r->headers_out->set("Content-Disposition" =>
"inline; filename=$name");
my $size = stat($file)->size;
$r->set_content_length($size);
$r->content_type($contenttypes{$type});
# determine if the request is a range request
my $range_request = $r->set_byterange;
# yea or nea
if ((my $status = $r->meets_conditions) == OK) {
$r->send_http_header;
}
else {
return $status;
}
my $fh = IO::File->new($file);
# handle a range request properly
if (($type eq 'pdf') && $range_request) {
while( my($offset, $length) = $r->each_byterange) {
seek $fh, $offset, 0;
$r->send_fd($fh, $length);
}
}
else {
$r->send_fd($fh);
};
$fh->close();
return DONE;
}
My problem is now, that i know not exactly what i should return if i make
an internal_redirect and what i have to return handling this internal_redirect
accessing a file like this results in the access-log in:
[30/Aug/2001:17:13:13 +0200] "GET
/files/sid00017/AR_1000A-TSS_report-TSS.PDF HTTP/1.1" 200 32768
"https://ida.festbrueder.ch/site/files.pl?siteid=17" "Mozilla/4.0
(compatible; MSIE 5.01; Windows
[30/Aug/2001:17:13:14 +0200] "GET /files/sid00017/AR_1000A-TSS_report-TSS.PDF
HTTP/1.1" 200 40960 "-" "Mozilla/4.0 (compatible; MSIE 5.01; Windows
NT)"195.141.44.1 - -
[30/Aug/2001:17:13:14 +0200] "GET
/files/sid00017/AR_1000A-TSS_report-TSS.PDF HTTP/1.1" 206 397776 "-"
"Mozilla/4.0 (compatible; MSIE 5.01; Windows NT)"
All three entries comes out of an access to one file ... *?* am i doing
this right?
Il'd be very thankfull if you could help me inhere ...
I'm really in trouble with this, and i won't loose my pleasure using
mod_perl ;-)
Thank you very much in advance!!
Thomas Bach
<><><><>
think karo.. www.bkaro.net