OK, I believe I identified the source of the problem, even though I don't yet understand it: somehow the filehandle for reading the input file is not set properly.
As I understand it, the filehandle should be the local filename (hence "$file" in the code given below), but if I just use "$file", it doesn't work. If I use CGI.pm's "upload" function, the filename is obtained properly: my $q = new CGI; my $filehandle = $q->upload(param("imagefieldname")); Using $filehandle instead of $file in the code below does a proper upload. But this only works when the image is uploaded via a form field. What I would like to do, however, is to parse content of a textarea field for image names and then upload all of them, so there will be no such field. The only workaround I can think of is to use Javascript to create form values for images on submit, but isn't there a simpler, perl-ish solution? --On Donnerstag, 13. Dezember 2001 17:01 +0100 Birgit Kellner <[EMAIL PROTECTED]> wrote: > I'm trying to code a routine for uploading up to four images via a > CGI-form, using CGI.pm. > > Filenames including local paths are stored in @files_to_upload. > At this point in the script I have the base names of each file in > @files_to_uploaded associated with the full filename in %basename, and > the extension in %imageextension. I separated these because I wanted to > validate the extensions and the filenames before the files are uploaded. > > $imagepath is the server path to the image directory. > > With the code given below, the appropriate files are created on the > server, but nothing is written to them. > > foreach my $file (@files_to_upload) { > my $filename = "$basename{$file}" . > "\.$imageextension{$basename{$file}}"; my $newfilename = > "$image_path\/$filename"; > print "TESTING - FILE: $file, FILENAME: $filename, NEWFILENAME: > $newfilename<br>";# prints ok my $bytesread; > binmode (OUTFILE); > open(OUTFILE, ">$newfilename") || die ("Cannot write to $newfilename: > $!"); while ($bytesread = read($file,$buffer,1024)) { > print qq|yep!|;# doesn't get printed > print OUTFILE $buffer;} > close ($file); > close (OUTFILE); > print qq|BYTES read: $bytesread<br>|;# no value for $bytesread > } > Birgit Kellner -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]