#!/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;