"Pete Smith" <[EMAIL PROTECTED]> writes:

[...]

> my $image_upload = $r->upload('image');
> my $file_handle = $image_upload->fh();
> 
> read ($file_handle, my $full_image_data, (stat($file_handle))[7]);
> 
> my $imager = Imager->new();
> 
> $imager->open(data => $full_image_data, type => 'jpeg');
> my ($width) = imgsize(\$full_image_data);
> 
> 
> I now know that I could pass the file handle to Imager and Image::Size
> instead of turning into a scalar stream, but that isn't the problem.
> 
> I have discovered that Apache::Request for mod_perl2 has changed the
> fh method to bb, which apparently returns an APR::Brigade (object I
> presume) instead of a file handle. 
> 
> I have looked for documentation for APR::Brigade, but can find none. I
> have no idea what it is!

APR::Brigade is, well, the perl glue for libaprutil's apr_brigade_t C struct.  
Along with buckets, they are used throughout the filter api, both in
apache2 and mp2 (collectively referred to as "bucket brigades").

> Could somebody please point me in the right direction as to how I can
> achieve the above in mod_perl2?

In your mp1 code, you are simply slurping the upload into
$full_image_data; with apreq2 you can do that with a bucket 
brigade via

  my $bb = $req->upload('image')->bb;
  my $full_image_data = "";

  while (my $b = $bb->first) {
     $b->read(my $buffer);
     $full_image_data .= $buffer;
     $b->remove;
  }

I'm sure there are better ways to use the brigade API
though.  The C API for brigades has a "flatten" function- 
does anyone know if mp2 has glue for that yet?

-- 
Joe Schaefer


-- 
Reporting bugs: http://perl.apache.org/bugs/
Mail list info: http://perl.apache.org/maillist/modperl.html

Reply via email to