General info:
I'm writing about an issue I'm having on a CGI::Application (Titanium)
webapp I'm building.
I'm using:
use Data::FormValidator::Constraints::Upload qw(file_format file_max_bytes);
and handle some file uploads POSTed by a form.
I'm using Win32 browsers (webapp running as plain cgi on Apache on
xubuntu) to upload files and have C:A:P::ValidateRM doing validation of
the form.
The problem:
When uploading files that have spaces in their filename, I get the
following error:
app.cgi: can't get filehandle for field named PhotoCat3 at
/usr/local/share/perl/5.10.0/Data/FormValidator/Constraints/Upload.pm
line 88.
The field should follow these rules:
constraint_methods => {
PhotoCat1 => [
file_format( mime_types => [qw!image/jpeg image/pjpeg image/png
image/x-png!] ),
file_max_bytes(2097152),
],
}
but both file_format and file_max_bytes can not work right.
When the filename doesn't have spaces, everything is working correct.
Tried different browsers on different OS (Win32, Linux).
Attached is some system info and the Data::Dump of interesting (related)
parts of the check_rm() method return results.
Thank you.
Subject: | buginfo.txt |
'.tmpfiles' => {
'*Fh::fh00001summer photo.jpg' => {
'info' => {
'Content-Type' => 'image/jpeg',
'Content-Disposition' => 'form-data; name="PhotoCat1"; filename="summer photo.jpg"'
},
'name' => bless( do{\(my $o = '/var/tmp/CGItemp4377')}, 'CGITempFile' ),
'hndl' => $VAR1->{'__INPUT_DATA'}{'PhotoCat1'}[0]
}
},
'PhotoCat1' => [
bless( \*{'Fh::fh00001summer photo.jpg'}, 'Fh' )
],
'invalid' => {
'PhotoCat1' => [
'file_format',
'file_max_bytes'
]
}
================================================================================
(server)$ perl -V
Summary of my perl5 (revision 5 version 10 subversion 0) configuration:
Platform:
osname=linux, osvers=2.6.24-19-server, archname=i486-linux-gnu-thread-multi
uname='linux palmer 2.6.24-19-server #1 smp sat jul 12 00:40:01 utc 2008 i686 gnulinux '
config_args='-Dusethreads -Duselargefiles -Dccflags=-DDEBIAN -Dcccdlflags=-fPIC -Darchname=i486-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.10 -Darchlib=/usr/lib/perl/5.10 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/perl5 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.10.0 -Dsitearch=/usr/local/lib/perl/5.10.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -DDEBUGGING=-g -Doptimize=-O2 -Duseshrplib -Dlibperl=libperl.so.5.10.0 -Dd_dosuid -des'
hint=recommended, useposix=true, d_sigaction=define
useithreads=define, usemultiplicity=define
useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
use64bitint=undef, use64bitall=undef, uselongdouble=undef
usemymalloc=n, bincompat5005=undef
Compiler:
cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
optimize='-O2 -g',
cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fno-strict-aliasing -pipe -I/usr/local/include'
ccversion='', gccversion='4.3.3 20081217 (prerelease)', gccosandvers=''
intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234
d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12
ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
alignbytes=4, prototype=define
Linker and Libraries:
ld='cc', ldflags =' -L/usr/local/lib'
libpth=/usr/local/lib /lib /usr/lib /usr/lib64
libs=-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt
perllibs=-ldl -lm -lpthread -lc -lcrypt
libc=/lib/libc-2.9.so, so=so, useshrplib=true, libperl=libperl.so.5.10.0
gnulibc_version='2.9'
Dynamic Linking:
dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E'
cccdlflags='-fPIC', lddlflags='-shared -O2 -g -L/usr/local/lib'
Characteristics of this binary (from libperl):
Compile-time options: MULTIPLICITY PERL_DONT_CREATE_GVSV
PERL_IMPLICIT_CONTEXT PERL_MALLOC_WRAP USE_ITHREADS
USE_LARGE_FILES USE_PERLIO USE_REENTRANT_API
Built under linux
Compiled at Jan 5 2009 19:47:06
@INC:
/etc/perl
/usr/local/lib/perl/5.10.0
/usr/local/share/perl/5.10.0
/usr/lib/perl5
/usr/share/perl5
/usr/lib/perl/5.10
/usr/share/perl/5.10
/usr/local/lib/site_perl
.
(server)$ uname -a
Linux talos 2.6.28-11-generic #42-Ubuntu SMP Fri Apr 17 01:57:59 UTC 2009 i686 GNU/Linux