Firstly Rado, there is a typo in your "open" line: a missing closing ".
The only other thing I would suggest is using BINMODE. See below for an
example routine.
> In EplSite WorkFlow i am using this routine and works fine:
>
> use CGI;
> $query = new CGI;
>
> if( $file = $query->param('ImageName') )
> {
> @thefile = split(/\\/,$file);
> $elements = @thefile;
> $thedocument = "[EMAIL PROTECTED]";
> $thedocument =~ s/\s/_/g;
> if( open (OUTFILE,">$globalp->{Documents_path}/$thedocument") )
> {
> binmode(OUTFILE);# Explicit binary mode
> while ($bytesread=read($fdat{attachthis},$buffer,32768))
> {
> print OUTFILE $buffer;
> }
> close(OUTFILE);
> }
> }
>
> I am using CGI for some manipulation on filename but you
> could not use it.
Ouch. CGI is completely unnecessary. Evaluating $fdat{ImageName} in
string context will provide the filename of the uploaded file - Embperl
is using CGI internally already to give you this filehandle. An
alternative version (with the usual off-the-top-of-my-head typo caveats)
that uses somewhat safer variable scope:
if (my $file = "$fdat{ImageName}") {
require File::Spec;
$file = (File::Spec->splitpath($file))[2] # just the filename, system
independently
$file =~ s/[^\w\.]/_/g;
$file =~ s/_+/_/g; # replace unwanted characters, somewhat
aggressively.
if ( open(OUTFILE, ">$some_path/$file") ) { # this should use
File::Spec as well.
binmode OUTFILE;
my $buffer;
print OUTFILE $buffer
while read($fdat{ImageName}, $buffer, 32768);
close OUTFILE;
}
}
Cheers,
Andrew
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]