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

Replies are listed 'Best First'.
Re: File upload from browser + text data
by gellyfish (Monsignor) on Mar 29, 2002 at 11:19 UTC

    You've been told to use CGI.pm now here's how you might do it - given that you have a form like :

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Test</title> </head> <body> <form method="post" action="/cgi-bin/uptest.cgi" enctype="multipart +/form-data"> <input type="file" name="uploaded_file" /> <input type="text" name="text_field" /> <input type="submit" name="submit" value="submit" /> </form> </body> </html>
    Then this code will save the uploaded file and give you the value of the text field - you can have as many text fields or upload fields as you want:
    #!/usr/bin/perl -wT use strict; use CGI qw(:standard); use CGI::Carp qw(fatalsToBrowser); my $fh = upload('uploaded_file'); my $filename = param('uploaded_file'); open OUTFILE, "> /tmp/$filename" or die "/tmp/$filename - $!\n"; print header('text/html'), start_html(), p("filename : $filename (saved in /tmp)"), p("text_field : " . param('text_field')); while (<$fh>) { print OUTFILE $_; } print end_html();

    /J\

Re: File upload from browser + text data
by aersoy (Scribe) on Mar 29, 2002 at 11:05 UTC

    Hello.

    I'm sure you will be asked to supply some code pretty soon.

    It will be a lot easier to direct you to the right direction by showing where on code it fails. Otherwise, monks are all against doing someone else's work.

    With that said, yes, I'll tell you to use CGI.pm, but first I'll tell you to read it's fine manual, it contains examples on doing this (hint: CREATING A FILE UPLOAD FIELD and CREATING A TEXT FIELD).

    --
    Alper Ersoy

Re: File upload from browser + text data
by dreadpiratepeter (Priest) on Mar 29, 2002 at 15:49 UTC
    Most of the time the problem is that there is no enctype='multipart/form-data' attribute in the form tag.
    Without that attribute everything appears to work, but you get no data.
    If it's not that, we'd need to see your code.

    -pete
    "I am Jack's utter lack of disbelief"