>From the ASF CMS codebase:
my $subr = $r->lookup_file($file); my $content_type = $subr->content_type || ""; an undefined content-type will eventually defer to the default content-type if you've set that in your httpd config. ----- Original Message ----- > From: André Warnier <a...@ice-sa.com> > To: mod_perl list <modperl@perl.apache.org> > Cc: > Sent: Friday, January 13, 2012 2:17 PM > Subject: Re: Obtaining the Apache Content-type for a file > > André Warnier wrote: >> David Booth wrote: >>> On Fri, 2012-01-13 at 12:09 -0500, David Booth wrote: >>>> On Fri, 2012-01-13 at 16:06 +0100, André Warnier wrote: >>>>> I have a PerlResponseHandler which processes some kind of > "logical document-id" provided in a request, locates the corresponding > "real document" on the filesystem, and returns it to the client via > sendfile(). >>>>> At the moment, this handler uses its own custom logic to > determine the MIME type of the document and return it to the client as a > Content-type HTTP header. >>>>> >>>>> My question is : instead of this custom logic, does there exist > a way, via mod_perl, to obtain this target file's MIME-type from Apache, > using Apache's own logic (mod_mime, AddType etc..) for that ? >>>> This isn't exactly what you asked for, but if you don't > need to server >>>> anything else along with it, then perhaps you could use >>>> internal_redirect >>>> > http://perl.apache.org/docs/2.0/api/Apache2/SubRequest.html#C_internal_redirect_ > > >>>> and let Apache set the Content-Type for you. If you do find the > direct answer to your question, please post it, as >>>> I'm interested in this question also. >>> >>> P.S. I just noticed lookup_file: >>> > http://perl.apache.org/docs/2.0/api/Apache2/SubRequest.html#C_lookup_file_ >>> I haven't tried it, but it sounds like it *might* do what you want. >>> >> Thanks. I will have a look at both. I don't think I an use the > internal_redirect in my case, >> lookup_file sounds interesting. I didn't think of looking there. >> > > I had a look, and it looks a bit like a circular argument.. > > I can do $r->lookup_file($my_path), but > > "lookup_file" is a method of Apache2::SubRequest (and returns an > Apache2::SubRequest object). Apache2::SubRequest is a subclass of > Apache2::RequestRec. > Apache2::RequestRec has a "finfo" method, which returns an APR::Finfo > object. > The APR::Finfo object has wealth of information (see below), unfortunately > apparently not what I'm after (the MIME type of $mypath, as resolved by > mod_mime e.g.). > > $device = $finfo->device; # (stat $file)[0] > $inode = $finfo->inode; # (stat $file)[1] > # stat returns an octal number while protection is hex > $prot = $finfo->protection; # (stat $file)[2] > $nlink = $finfo->nlink; # (stat $file)[3] > $gid = $finfo->group; # (stat $file)[4] > $uid = $finfo->user; # (stat $file)[5] > $size = $finfo->size; # (stat $file)[7] > $atime = $finfo->atime; # (stat $file)[8] > $mtime = $finfo->mtime; # (stat $file)[9] > $ctime = $finfo->ctime; # (stat $file)[10] > $csize = $finfo->csize; # consumed size: not portable! > $filetype = $finfo->filetype; # file/dir/socket/etc > $fname = $finfo->fname; > $name = $finfo->name; # in filesystem case: > > Any other idea anyone ? We're now two to be interested in the answer. >