| #!/usr/local/bin/perl -w |
| |
| use strict 'refs'; |
| use lib '..'; |
| use CGI qw(:standard); |
| use CGI::Carp qw/fatalsToBrowser/; |
| |
| print header(); |
| print start_html("File Upload Example"); |
| print strong("Version "),$CGI::VERSION,p; |
| |
| print h1("File Upload Example"), |
| 'This example demonstrates how to prompt the remote user to |
| select a remote file for uploading. ', |
| strong("This feature only works with Netscape 2.0 or greater, or IE 4.0 or greater."), |
| p, |
| 'Select the ',cite('browser'),' button to choose a text file |
| to upload. When you press the submit button, this script |
| will count the number of lines, words, and characters in |
| the file.'; |
| |
| my @types = ('count lines','count words','count characters'); |
| |
| # Start a multipart form. |
| print start_multipart_form(), |
| "Enter the file to process:", |
| filefield('filename','',45), |
| br, |
| checkbox_group('count',\@types,\@types), |
| p, |
| reset,submit('submit','Process File'), |
| endform; |
| |
| # Process the form if there is a file name entered |
| if (my $file = param('filename')) { |
| my %stats; |
| my $tmpfile=tmpFileName($file); |
| my $mimetype = uploadInfo($file)->{'Content-Type'} || ''; |
| print hr(), |
| h2($file), |
| h3($tmpfile), |
| h4("MIME Type:",em($mimetype)); |
| |
| my($lines,$words,$characters,@words) = (0,0,0,0); |
| while (<$file>) { |
| $lines++; |
| $words += @words=split(/\s+/); |
| $characters += length($_); |
| } |
| close $file; |
| grep($stats{$_}++,param('count')); |
| if (%stats) { |
| print strong("Lines: "),$lines,br if $stats{'count lines'}; |
| print strong("Words: "),$words,br if $stats{'count words'}; |
| print strong("Characters: "),$characters,br if $stats{'count characters'}; |
| } else { |
| print strong("No statistics selected."); |
| } |
| } |
| |
| # print cite("URL parameters: "),url_param(); |
| |
| print hr(), |
| a({href=>"../cgi_docs.html"},"CGI documentation"), |
| hr, |
| address( |
| a({href=>'/~lstein'},"Lincoln D. Stein")), |
| br, |
| 'Last modified July 17, 1996', |
| end_html; |
| |