wanadlan has asked for the wisdom of the Perl Monks concerning the following question:

I have html file that use enctype=multipart/form-data. From this html, I tried to POST data (submit file) to CGI file. But it cannot run. It because CGI must have encoding type multipart/form-data. But I don't know to use this encoding type in CGI. I run perl in LINUX.

20030122 Edit by Corion: Moved from Perl Monks Discussion to SoPW

  • Comment on How I can use multipart/form-data in CGI?

Replies are listed 'Best First'.
Re: How I can use multipart/form-data in CGI?
by Joost (Canon) on Jan 22, 2003 at 15:28 UTC
    Well, perldoc CGI has some good things to say about this:
    When the form is processed, you can retrieve the entered filename by calling param(): $filename = $query->param('uploaded_file'); Different browsers will return slightly different things for th +e name. Some browsers return the filename only. Others return the full + path to the file, using the path conventions of the user's machine. Re +gard- less, the name returned is always the name of the file on the u +ser's machine, and is unrelated to the name of the temporary file tha +t CGI.pm creates during upload spooling (see below). The filename returned is also a file handle. You can read the +contents of the file using standard Perl file reading calls: # Read a text file and print it out while (<$filename>) { print; } # Copy a binary file to somewhere safe open (OUTFILE,">>/usr/local/web/users/feedback"); while ($bytesread=read($filename,$buffer,1024)) { print OUTFILE $buffer; }
    If you need more specific information, you might want to enter a more specific description of your problem.

    HTH

    -- Joost downtime n. The period during which a system is error-free and immune from user input.
Re: How I can use multipart/form-data in CGI?
by thinker (Parson) on Jan 22, 2003 at 17:17 UTC
    Hi wandalan,

    If you check perldoc CGI, you will find that CGI has a start_multipart_form() method.
    If you use this instead of the start_form() method in your script, it should work as you want.

    cheers

    thinker