Johnno,
I'm attaching a cgi script for file uploads that is pretty simple. If
you need some information on how it works, check here:
http://www.tneoh.zoneit.com/cgi/upload/
This should get your rolling. If you don't have CGI_LIB.pl, you can get
it from the page above. You don't have to use it, you can go through
the CGI_LIB.pl script and take what you want from it and code it however
you want.
Justin Hopper
[EMAIL PROTECTED]
On Sat, 2002-05-18 at 03:42, Johnno wrote:
> I use a html file to browse the HD and then upload it to the web server
>
> my $file = $req->param("FILE1");
> my $fileName = $file;
> $fileName =~ s!^.*(\\|\/)!!;
> $newmain = $fileName;
>
> this contains the filename of the local hd.. ie.. c:/stuff/pic.jpg
>
> I am wanting to upload pic.jpg to the server using the following code and
> save it as pic.jpg on the server..
>
> open (OUTFILE, ">$newmain");
> $buffer =<OUTFILE>;
> print OUTFILE $buffer;
> close (OUTFILE);
>
> but for some reason it only uplaod the first 21 bytes
>
> many thanks,
> Johnno
>
>
> ----- Original Message -----
> From: "Justin Hopper" <[EMAIL PROTECTED]>
> To: "Johnno" <[EMAIL PROTECTED]>
> Cc: "perl-unix-users mailing list"
> <[EMAIL PROTECTED]>
> Sent: Saturday, May 18, 2002 3:46 PM
> Subject: Re: [Perl-unix-users] file uploads in Perl
>
>
> > Johnno,
> >
> > I think you are going to have to give a bit more information than that.
> > Where are you trying to upload the file to? The code below is a little
> > confusing. It looks like you opened the file $file for writing, then
> > tried to read the information into the var $buffer, then tried to output
> > the contents of $buffer to $file? I'm not sure what would happen here,
> > but I think you would just end up with an empty file for $file.
> >
> > Explain what you are trying to do, and I'd be happy to help you if I
> > can. Maybe somebody will answer my previous question about perlcc and
> > using IO::SOCKET =)
> >
> > Justin Hopper
> > [EMAIL PROTECTED]
> >
> >
> > On Fri, 2002-05-17 at 20:38, Johnno wrote:
> > > how do you upload a file in perl??
> > >
> > > I have var $file which is the file on the local HD.. from there is
> where a
> > > get into trouble..
> > >
> > > open (OUTFILE, ">$file");
> > > $buffer =<OUTFILE>;
> > > print OUTFILE $buffer;
> > > close (OUTFILE);
> > >
> > >
> > > Johnno
> > >
> > >
> > > _______________________________________________
> > > Perl-Unix-Users mailing list
> > > [EMAIL PROTECTED]
> > > To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
> >
> >
> > _______________________________________________
> > Perl-Unix-Users mailing list
> > [EMAIL PROTECTED]
> > To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
>
#!/usr/local/bin/perl
require 'CGI_LIB.pl';
# For those whose server is on windows system, you need the following three lines.
# Thanks to Carlo Maria Piacenti <[EMAIL PROTECTED]> who told me about this.
binmode(STDIN);
binmode(STDOUT);
binmode(STDERR);
&Parse_Multi;
if (defined $CGI{'SeeUploadedFile'}) {
# During your testing on your web server, you can check the size of
# ./uploadfile.unknown with the size of the tested file.
# If you're using windows system, binmode function is needed for saving
# binary data and binmode function should come after open function.
open(TMP, "> uploadfile.unknown");
binmode(TMP);
print TMP $CGI{'UploadedFile'}->{'Contents'};
close(TMP);
print "Content-Type: $CGI{'UploadedFile'}->{'Content-Type'}\n";
# The following will default the filename when the browser asking user to save it.
# This only works in netscape.
print "Content-Length: ".length($CGI{'UploadedFile'}->{'Contents'})."\n";
print "Content-Disposition: filename=\"$CGI{'UploadedFile'}->{'filename'}\n\n";
print $CGI{'UploadedFile'}->{'Contents'};
}
elsif (defined $CGI{'SeeCGIHash'}) {
&Print_Head;
print "<html><head><title>Values of Hash Array \%CGI</title></head>";
print "<body><h2>Values of Hash Array \%CGI</h2><form OnSubmit=\"return ";
print "false;\"><input type=\"submit\" OnClick=\"history.go(-1)\" value";
print "=\"Back\"></form><hr>";
for $key (sort keys %CGI) {
print "<blockquote><table border=\"1\" cellspacing=\"2\" cellpadding=\"4\"><tr>";
if (ref($CGI{$key}) =~ /HASH/) {
print "<th colspan=\"2\">Hash array of \"<font color=\"#009900\">$key";
print "</font>\"<tr><th>Variable Name<th>Value";
for (keys %{$CGI{$key}}) {
print "<tr><td valign=\"top\"><font color=\"#0000ff\">\$CGI{'$key'}->";
print "{'$_'}</font><td><font color=\"#ff3333\">$CGI{$key}->{$_}";
print "</font>";
}
}
elsif (ref($CGI{$key}) =~ /ARRAY/) {
$count = 0;
print "<th colspan=\"2\">Array of \"<font color=\"#009900\">$key</font>";
print "\"<tr><th>Variable Name<th>Value";
for $count (0..$#{$CGI{$key}}) {
print "<tr><td><font color=\"#0000ff\">\$CGI{'${key}'}\[$count\]";
print "</font><td><font color=\"#ff3333\">$CGI{$key}[$count]</font>\n";
}
}
else {
print "<th colspan=\"2\">Single value of \"<font color=\"#009900\">$key";
print "</font>\"<tr><th>Variable Name<th>Value";
print "<tr><td><font color=\"#0000ff\">\$CGI{'$key'}</font><td><font ";
print "color=\"#ff3333\">$CGI{$key}</font>\n";
}
print "</table></blockquote><p>";
}
print "<hr><form OnSubmit=\"return false\"><input type=\"submit\" OnClick";
print "=\"history.go(-1)\" value=\"Back\"></form></body></html>";
}