LWP - multipart/form-data file upload from scalar rather than local file

Posted: 09-28-2005, 08:33 PM
I'm looking to do an HTTP upload, preferably with HTTP::Request::Common,
but get the file data from either a filehandle or a scalar rather than
give it a local filename.

For some background, I'm making a psuedo-proxy for an HTTP file upload.
The user uploads an image from their browser to a mod_perl server. The
server then changes around some of the arguments, namely taking a session
ID out of the post data and adding it to the query string, then sends that
modified request off to the final destination server.

I can get to the Apache upload object via $r->upload('Image'), then get a
filehandle from $upload->fh(); At that point, I want to either pass that
filehandle or read from that filehandle into a scalar, then pass that to
LWP for an upload.

There's a bit in the perldoc for HTTP::Request::Common, in the POST
section, that says "The first value in the array ($file) is the name of a
file to open. This file will be read and its content placed in the
request. The routine will croak if the file can't be opened. Use an
'undef' as $file value if you want to specify the content directly."
However, that's the last mention at all of using undef for $file, I can't
seem to find any more information on this. According to the doc, the
array should be [ $file, $filename, Header => Value... ]. Assuming that
the file contents would be somewhere in that Header => Value section, I
have no idea what Header to give it.

Is there a way to pass a scalar or a filehandle to LWP for an upload, or
do I have to give it a local filename to read from? I'd prefer not to
write temporary files for this if I can help it, but I can do that if
there's no other way around this.

Also, let me know if I'm barking up the wrong tree with the way to
accomplish this goal. All I'm really trying to do is take one of the
name/value pairs out of the POST content and attach it to the URL as part
of a query string, so it's entirely possible there's a far better way to
do this.

Thanks!

-- Swervo

Remove S, P, A, and M from address to email me.

Reply With Quote

Responses to "LWP - multipart/form-data file upload from scalar rather than local file"

Swervo
Guest
Posts: n/a
 
Re: LWP - multipart/form-data file upload from scalar rather than local file
Posted: 10-03-2005, 05:53 PM
On Wed, 28 Sep 2005 12:33:15 -0700, Swervo wrote:
> I'm looking to do an HTTP upload, preferably with HTTP::Request::Common,
> but get the file data from either a filehandle or a scalar rather than
> give it a local filename.
I know it's bad form to respond to oneself, but figured I'd mention that
it appears the only way to accomplish this is modify
HTTP::Request::Common, or in my case, create my own module with most of
the same code, but accept a filehandle as the first argument rather than
the name of a local file. Works like a charm.

-- Swervo

Remove S, P, A, and M from address to email me.

Reply With Quote
scottbjer@gmail.com
Guest
Posts: n/a
 
Re: LWP - multipart/form-data file upload from scalar rather than local file
Posted: 10-14-2005, 08:02 PM
So you know, I was having the same problem myself, and found a way to
do this without rewriting the HTTP::Request::Common module ->

my $ua = new LWP::UserAgent;
$response=$ua->request(POST $URL,
Content_Type => 'multipart/form-data',
Content => [ $PARAM => [undef,$FILENAME, Content => $CONTENTS ] ]);

Where $PARAM is the name of the parameter, $FILENAME is what you want
to call the file, and $CONTENTS is a scalar holding the contents of the
file.

Scott
Swervo wrote:
> On Wed, 28 Sep 2005 12:33:15 -0700, Swervo wrote:
>
> > I'm looking to do an HTTP upload, preferably with HTTP::Request::Common,
> > but get the file data from either a filehandle or a scalar rather than
> > give it a local filename.
>
> I know it's bad form to respond to oneself, but figured I'd mention that
> it appears the only way to accomplish this is modify
> HTTP::Request::Common, or in my case, create my own module with most of
> the same code, but accept a filehandle as the first argument rather than
> the name of a local file. Works like a charm.
>
> -- Swervo
>
> Remove S, P, A, and M from address to email me.
Reply With Quote
 
LinkBack Thread Tools Search this Thread Display Modes
Reply


Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are Off
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On
Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
saving data to a local XML file Goo101 Macromedia Flash Data Integration 8 08-23-2006 10:13 AM
File upload form trouble ducati1 Macromedia Dynamic HTML 0 09-15-2005 02:06 AM
Form with file upload box Wookie Macromedia ColdFusion 1 03-29-2005 01:40 PM
multipart/form-data Scot PHP Development 1 12-11-2003 04:52 PM
Upload local file to server Ryan K Whippo PERL Beginners 3 08-29-2003 05:19 PM