Hi all,   I am working on a cgi script that can create  a temporal file
with either an uploaded file, or, in its absence,  the pasted content of
that file.  I have managed to upload the file only if that is the only
input field in my form, but if I add  the choice to paste the content of
the file, there is no way I can successfully create the temporal file
with the content of the uploaded file.   I am including with this e-mail
the html code of the form I am using together with the cgi script I am
working on, and I will be very happy if someone could let me know why
this thing is not working.
Thanks.

Pedro

HTML
<html>
<head>
<html>
<head>
   <title>test</title>
</head>
</head>
<body bgcolor="#FFFFCD" link="#0000FF">
<center>
<h1>
<font size=+4>TEST</font></h1></center>
<p><br>
<p>
<hr size="2" NOSHADE>
<br><form  method="POST" action="../../cgi-bin/variab.cgi"
enctype="multiform/fo
rm-data">
<table BORDER=2 >
<tr><td>
        <p><b>Enter a name for your  file:<br></b>
        <INPUT SIZE=25 NAME="name">
        </p>
</td></tr>
<tr><td><p></p></td></tr>
<tr><td>
<p> <b>Upload your file</b><br>
<input type="file" name="file"  SIZE=30>
</p></td></tr>
<tr><td><p></p></td></tr>
<tr><td>
<p><b>Paste the content of your file</b>
<textarea NAME="alignment" ROWS=10 COLS=80></textarea>
</td></tr></p>
</table>
</form>
<P><hr size="4">
</body>
</html>

CGI
#!/usr/sbin/perl -wT
use CGI;
use strict;
use Fcntl qw( :DEFAULT :flock);
#define file paths for file writes and genscan location


my $bin="/usr1/par/bin";
my $httproot = "/usr/freeware/apache/share/htdocs/MIF/icons/";
my $dir = "/tmp/"; #directory for writing files
my $gnuplot = "/usr/freeware/bin/gnuplot";
my $ppmtogif = "/usr/freeware/bin/ppmtogif";


my $q = new CGI;
print $q->header,  $q->start_html(-title=>"Variability
Results",-bgcolor=>"white");
print $q->h1("Variability Results");


my $in    = $q->param("name");
my $file  = $q->param("file");
my $fh    = $q->upload( $file );
my $paste = $q->param("alignment");
my $i;
my $flen;

my $var = $^T;
$in =~ s/\s\t//g;
$in = $in.$var;


if (!$file) {
  open(INFILE, ">$dir/$in") || die "I cannot create $in!\n";
  flock(INFILE, 2);
  print INFILE "$paste";
  close (INFILE) || die "can't close $dir/$in!";
} else {
  open(UPLOAD,">$dir/$in") or die "Can't open outfile for writing: $!";
  $flen = 0;
  while (read($fh,$i,1024)) {
      print UPLOAD $i;
      $flen = $flen + 1024;
      if ($flen > 5120000) {
      close(UPLOAD);
      die "Error - file is too large. Save aborted.<p>";
      }
     }
close(UPLOAD);
}

$q->end_html;

***************************************************************************

PEDRO A. RECHE , pHD             TL: 617 632 3824
Dana-Farber Cancer Institute,    FX: 617 632 4569
Harvard Medical School,          EM: [EMAIL PROTECTED]
44 Binney Street, D1510A,        EM: [EMAIL PROTECTED]
Boston, MA 02115                 URL: http://www.reche.org
***************************************************************************


Reply via email to