#!/usr/bin/perl -Tw # upload3.cgi use strict; use DBI; use File::Basename; use CGI qw(:standard); use CGI::Carp qw(fatalsToBrowser); my $Directory = "/usr/www/html/book/storage"; my $Url_Path = "/book/storage"; my $File_Name = param('filename'); my $Description = param('description'); my $File = Get_File_Name($File_Name); $CGI::POST_MAX = 1024 * 250; # Limit to 250kb posts... Store_Results(); Store_Description(); Print_Results(); sub Store_Description{ my $DBH = DBI->connect("DBI:mysql:book","book","addison"); my $sth_insert = $DBH->prepare( qq{INSERT INTO files (Description,FileName) VALUES (?,?)} ) or die $DBH->errstr; $sth_insert->execute($Description, $File); $DBH->disconnect; } sub Get_File_Name{ if($ENV{HTTP_USER_AGENT} =~ /win/i){ fileparse_set_fstype("MSDOS"); } elsif($ENV{HTTP_USER_AGENT} =~ /mac/i) { fileparse_set_fstype("MacOS"); } my $full_name = shift; $full_name = basename($full_name); $full_name =~ s!\s!\_!g; # Replace whitespace with _ return($full_name); } sub Store_Results{ my $data; my $mime = uploadInfo($File_Name)->{'Content-Type'}; open (STORAGE, ">$Directory/$File") or die "Error: $Directory/$File: $!\n"; if($mime !~ /text/){ binmode ($File_Name); binmode (STORAGE); } while( read($File_Name, $data, 1024) ){ print STORAGE $data; } close STORAGE; } sub Print_Results{ my $link = "$Url_Path/$File"; print header; print start_html("File Upload Example 3"); print< File Sent: $File_Name File Name: $File Link to File: $link View Files HTML print end_html; }