Ask a Question related to PERL Modules, Design and Development.
-
Swervo #1
LWP - multipart/form-data file upload from scalar rather than local file
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.
Swervo Guest
-
file upload, multipart form, and cgi::cache
Not sure if folks frequent this forum but if you see this and can/do help, I'd be much obliged I am trying to implement caching in a cgi app I am... -
file upload form enctype="multipart/form-data
I'm upload a file using cffile upload and that seems to work fine except I need to use enctype="multipart/form-data on the form side. This isn't a... -
#25995 [Asn]: multipart/form-date file upload problem.
ID: 25995 User updated by: s dot masugata at digicom dot dnp dot co dot jp Reported By: s dot masugata at digicom dot dnp dot... -
#25995 [Opn->Asn]: multipart/form-date file upload problem.
ID: 25995 Updated by: moriyoshi@php.net Reported By: s dot masugata at digicom dot dnp dot co dot jp -Status: ... -
#25995 [NEW]: multipart/form-date file upload problem.
From: s dot masugata at digicom dot dnp dot co dot jp Operating system: FreeBSD/Linux/Solaris(sparc) PHP version: 4.3.4RC2 PHP... -
Swervo #2
Re: LWP - multipart/form-data file upload from scalar rather than local file
On Wed, 28 Sep 2005 12:33:15 -0700, Swervo wrote:
I know it's bad form to respond to oneself, but figured I'd mention that> 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.
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.
Swervo Guest
-
scottbjer@gmail.com #3
Re: LWP - multipart/form-data file upload from scalar rather than local file
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.scottbjer@gmail.com Guest



Reply With Quote

