Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling
 
PerlMonks  

Re: file not getting through post

by crazyinsomniac (Prior)
on Jul 02, 2002 at 08:14 UTC ( #178795=note: print w/ replies, xml ) Need Help??


in reply to file not getting through post

############################# BEEP [ zfile =>"$ENV{DOCUMENT_ROOT}/filename.zip" ], ...
How to RTFM

perldoc HTTP::Request::Common

POST $url, [$form_ref], [Header => Value,...] This works mostly like GET() with POST as the method, but this function also takes a second optional array or hash reference parameter ($form_ref). This argument can be used to pass key/v +alue pairs for the form content. By default we will initialize a re +quest using the "application/x-www-form-urlencoded" content type. Th +is means that you can emulate a HTML <form> POSTing like this: POST 'http://www.perl.org/survey.cgi', [ name => 'Gisle Aas', email => 'gisle@aas.no', gender => 'M', born => '1964', perc => '3%', ]; This will create a HTTP::Request object that looks like this: POST http://www.perl.org/survey.cgi Content-Length: 66 Content-Type: application/x-www-form-urlencoded name=Gisle%20Aas&email=gisle%40aas.no&gender=M&born=1964&per +c=3%25 ############################# BEEP The POST method also supports the "multipart/form-data" conten +t used for *Form-based File Upload* as specified in RFC 1867. You tri +gger this content format by specifying a content type of "'form-dat +a'" as one of the request headers. If one of the values in the $form_ +ref is an array reference, then it is treated as a file part specific +ation with the following interpretation: [ $file, $filename, Header => Value... ] 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. The $filename is the filename to report in the request. If this va +lue is undefined, then the basename of the $file will be used. You ca +n specify an empty string as $filename if you don't want any fil +ename in the request. Sending my ~/.profile to the survey used as example above can +be achieved by this: POST 'http://www.perl.org/survey.cgi', Content_Type => 'form-data', Content => [ name => 'Gisle Aas', email => 'gisle@aas.no', gender => 'M', born => '1964', ############################# BEEP init => ["$ENV{HOME}/.profile"], ] This will create a HTTP::Request object that almost looks this + (the boundary and the content of your ~/.profile is likely to be different): POST http://www.perl.org/survey.cgi Content-Length: 388 Content-Type: multipart/form-data; boundary="6G+f" --6G+f Content-Disposition: form-data; name="name" Gisle Aas --6G+f Content-Disposition: form-data; name="email" gisle@aas.no --6G+f Content-Disposition: form-data; name="gender" M --6G+f Content-Disposition: form-data; name="born" 1964 --6G+f Content-Disposition: form-data; name="init"; filename=".prof +ile" Content-Type: text/plain PATH=/local/perl/bin:$PATH export PATH --6G+f-- If you set the $DYNAMIC_FILE_UPLOAD variable (exportable) to s +ome TRUE value, then you get back a request object with a subrouti +ne closure as the content attribute. This subroutine will read th +e content of any files on demand and return it in suitable chunk +s. This allow you to upload arbitrary big files without using lot +s of memory. You can even upload infinite files like /dev/audio if +you wish; however, if the file is not a plain file, there will be +no Content-Length header defined for the request. Not all servers + (or server applications) like this. Also, if the file(s) change in + size between the time the Content-Length is calculated and the time + that the last chunk is delivered, the subroutine will "Croak".

 
______crazyinsomniac_____________________________
Of all the things I've lost, I miss my mind the most.
perl -e "$q=$_;map({chr unpack qq;H*;,$_}split(q;;,q*H*));print;$q/$q;"


Comment on Re: file not getting through post
Select or Download Code

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://178795]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others studying the Monastery: (10)
As of 2014-12-18 05:17 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    Is guessing a good strategy for surviving in the IT business?





    Results (42 votes), past polls