Well, there are 2 issues here:
1) Getting $upload->link to work (yes, you can do it if you really want
to:-))
2) Fixing your original problem

So:

1) Use TEMP_DIR to set a different spool directory for the uploaded file:

>From the same manpage: (under methods to pass $apr->new())

TEMP_DIR
Sets the directory where upload files are spooled. On a *nix-like that
supports link(2), the TEMP_DIR should be located on the same file system as
the final destination file:
 my $apr = Apache::Request->new($r, TEMP_DIR => "/home/httpd/tmp");
 my $upload = $apr->upload('file');
 $upload->link("/home/user/myfile") || warn "link failed: $!";

2) I'm not really sure - I only gave your problem a rather casual look-over,
but my first instinct is to add close (OUTFILE); to the end of your code -
perhaps it's not  flushing the output buffer to the file since you never
explicitly close the filehandle...

  Issac

----- Original Message -----
From: "Leif Snorre Schøyen Boasson" <[EMAIL PROTECTED]>
To: "Issac Goldstand" <[EMAIL PROTECTED]>
Cc: <[EMAIL PROTECTED]>
Sent: Tuesday, October 22, 2002 8:51 PM
Subject: Re: Problems writing binary uploaded data...


> Well, the original reason I didn't use that was I didn't know what
> "linking" it was used for... (so much for RTFM... :) ).
>
> However, my /tmp (which Apache is using as it's tmp-directory) is on its
> own partition, so I cant really link it anywhere else but /tmp, which is
> not exactly where I'd like it to go... Is there any other way to get it
> saved directly like that, and not having to cp it somewhere else?
>
> (and I'd still like to know why my original code doesn't work... :) )
>
> Thanks alot for the advice, though!
>
> cheers
> Snorre
>
> On Tue, 22 Oct 2002, Issac Goldstand wrote:
>
> > Um... Why don't you simply use $upload->link on the handle?
> >
> > <From Apache::Request manpage>
> >   my $upload = $apr->upload('file');
> >   $upload->link("/path/to/newfile") or
> >       die sprintf "link from '%s' failed: $!", $upload->tempname;
> > </From Apache::Request manpage>
> >
> >   Issac
> >
> > ----- Original Message -----
> > From: "Leif Snorre Schøyen Boasson" <[EMAIL PROTECTED]>
> > To: "mod_perl" <[EMAIL PROTECTED]>
> > Sent: Tuesday, October 22, 2002 6:08 PM
> > Subject: Problems writing binary uploaded data...
> >
> >
> > > I'm trying to save an uploaded binary file (a jpg) through a
perlscript.
> > > The code doing this looks like:
> > >
> > >    if (open OUTFILE, ">/var/www/tmp/test.jpg"){
> > >
> > >        binmode $ULFILE, ":raw";
> > >        binmode OUTFILE, ":raw";
> > >
> > >        while ($sizeread=read($ULFILE, $buffer, 1024)) {
> > >            print OUTFILE $buffer;
> > >            $size += $sizeread;
> > >        }
> > >
> > >        print "<br>Read ",$size," bytes.";
> > >    }
> > >
> > > Where ULFILE is the filehandle for the uploaded file, gotten from an
> > > Apache::Request object. Now, the sum of the sizes reported by the
> > > read-command is correct for the original jpg file I use to test, but
the
> > > written file is somewhat smaller (7192 bytes smaller), so I figure
> > > something gets lost in the writing. But I cant figure out how or
why...
> > >
> > > ...anybody see some reason why I shouldnt get the exact binary data
out?
> > >
> >
>

Reply via email to