Thanks Richard, everyone.  I tried your (Richard) code also.  It bombs
on "No File Specified".  Looks like somehow it can't grab ahold of the
file I'm trying to upload.  There must be something in the rest of my
cod that is interfering with all this.  But I really can't imagine
what.  The rest of my code is truly very simple.  I decided to try
once more with some of my original upload code (which DOES work on a
simpler version of this app I'm creating).

I know this might not be the prettiest thing around..., but here is an
example of the code I'm using to take in one of the pictures:
# Checking if you submitted a front side of a web-friendly picture.
if ($query->param('webFront')) {
        #Take in the field's value.
        $webFrontPic = $query->param('webFront');
        #Do the actual uploading...
        &UploadPicture($photoID, $webFrontPic,'webFront');
        print "Selected $webFrontPic to be uploaded as the web front<br>\n";
}else {
        &Error("No Web Friendly front side picture was submitted");
}

Again, here is the code I am now using for the upload function:
sub UploadPicture {

        my $photoID = $_[0];
        my $file = $_[1];
        my $picLoc = $_[2];

        my $filepath = "$UPLOAD_DIR/$picLoc$photoID$file\.jpg";

        $upload_filehandle = $query->upload($file);
        open UPLOADFILE, ">$filepath";
        while ( <$upload_filehandle> )  {
                print UPLOADFILE;
        }
        close UPLOADFILE;

}

..........ideas?........

--Alex

> Here is some code I've written that does work...  It's using CGI.pm.
> What follows is short snippets of the code, not the whole thing...
>
> at the start of the file:
>
> #!perl
> use strict;
> use warnings;
> use CGI;
> use CGI::Carp qw/fatalsToBrowser/;
>
> my $q = new CGI;
>
> later on, I create the form:
>
> <form method="post" action="/path/to/script"
> enctype="multipart/form-data">
> File to upload: <input type="file" size="40" name="data"><br />
> <input type="submit" value="Upload file">
> </form>
>
>
> then, I use the following code to retrieve the file:
>
> # first, we need to grab the uploaded file's file handle, and check
> # to see if there was an error during the send....
> my $fh = $q->upload('data');
> if (!$fh and $q->cgi_error) {
>       die("File upload error: " . $q->cgi_error);
> } elsif (!$fh) {
>       die("No file specified");
> }
>
> my $fname = "output_file";
> # at this point, we have a good file that has been uploaded....
> open(my $out, ">", "$WORKING_DIR/$fname") or die("Could not create
> file: $!");
>
> # we make sure that we have raw character discipline
> binmode($fh, ":raw");
> binmode($out, ":raw");
>
> # now, read the data using buffered IO
> my $bytesread;
> my $buffer;
> while($bytesread = read($fh, $buffer, 1024)) {
>       print $out $buffer;
> }
>
> # read returns undef on an error.  I don't know where this error gets
> stored
> # but I'm guessing $!
> if (!defined($bytesread)) {
>       die("An error occured while trying to write the file: $!");
> }
>
> # now close the files...
> close($fh) or die("couldn't close uploaded file: $!");
> close($out) or die("couldn't close copied file: $!");
>
>
> you can obviously modify this code as needed, but it looks fairly close
> to what you need.
>
> Hopefully, people won't find that I've made too many ugly mistakes, or
> forgotten to check some important return codes (although if I have,
> please let me know...)
>
> HTH,
> Ricky
>

_______________________________________________
Boston-pm mailing list
[EMAIL PROTECTED]
http://mail.pm.org/mailman/listinfo/boston-pm

Reply via email to