OK. I get all that. Now I'm getting a very strange error when I try to use
the hook. the error from the error_log is: Undefined subroutine
Apache::Upload::handler called at /dev/null line 1.
Here is the code that calls the hook:
sub header_parser_handler($)
{
my $=shift;
my $hook_handler= sub {
my ($upload, $buf, $len, $hook_data)=@_;
$hook_cache-set($hook_data,$len);
Apache-log_error($hook_data: got $len bytes for .$upload-name);
};
my %cookies=Apache::Cookie-fetch;
my $u_id=$cookies{u_id}-value;
my
$q=Apache::Request-instance($r,TEMP_DIR=/home/www/spool,HOOK_DATA=$u_i
d,UPLOAD_HOOK=$hook_handler);
return OK;
}
Any idea what's going on here?
Issac
Internet is a wonderful mechanism for making a fool of
yourself in front of a very large audience.
--Anonymous
Moving the mouse won't get you into trouble... Clicking it might.
--Anonymous
PGP Key 0xE0FA561B - Fingerprint:
7E18 C018 D623 A57B 7F37 D902 8C84 7675 E0FA 561B
- Original Message -
From: Joe Schaefer [EMAIL PROTECTED]
To: Issac Goldstand [EMAIL PROTECTED]
Cc: [EMAIL PROTECTED]
Sent: Monday, October 08, 2001 19:16
Subject: Re: Apache::Request UPLOAD_HOOK
Issac Goldstand [EMAIL PROTECTED] writes:
The documentation on how to use this feature is a bit sketchy...
Yes, I agree. Doc patches are always welcome.
Comments below are from memory since I last tested this feature
about 6 months ago.
Can anyone explain: 1) What the variables passed to the callback
function are (looks like the Apache::Upload object is the first, but
what's been filled in there when the hook gets called?
The current upload object goes there when the hook is called.
The second looks like the current bunch of data that's been
recieved[?],
Right, it's the buffer from apache's ap_get_client_block,
which is usually around 2-4 KB. The hook runs before the
buffer gets written to the underlying tempfile, but as soon
as your hook has completed, Apache::Request will write it
automatically.
the third is the length, but is that the length recieved so far or the
length recieved between the last time it was called and this time?
The length of the buffer; the same as length($buffer).
And lastly, what can be placed in HOOK_DATA - scalar only?)
Yes, but the scalar can also be a ref to an array or hash.
2) Is there any way of knowing how often the hook will get called?
Not really- it's called when apache calls ap_get_client_block.
3) Is there a specific phase of the Request that Apache::Request
must be called and initialized with the callback before?
The hooks get run as the data is uploaded to the server,
which IOW is when the data is first being parsed. This
can happen at any phase you choose, but it only happens
once per request.
4) Are there any specific issues for using this with
Apache::Request-instance ?
Other than (3), I don't think so- but as I said before
this is not a well-tested feature (yet :)
HTH
--
Joe Schaefer