0

我正在使用 cakephp 2.0 并尝试进行基本文件上传,但我无法将文件从表单获取到我的控制器应用程序。我已经和数据库谈过了,他向我保证所有权限都设置正确。以下是我认为的代码:

<?php echo $this->Form->create('FileUpload', array('type' => 'file', 
    'action' => 'batchupload')); ?>
    <fieldset>
        <?php echo $this->Form->input('manufacturer_id'); ?>
        <?php echo $this->Form->file('userfile', array('type' => 'file')); ?>
    </fieldset>
<?php echo $this->Form->end(__('Upload'), true); ?>

我遇到的问题是 gettype($this->request->data['FileUpload']['userfile']) 返回字符串。在这件事上的任何帮助都会很棒。

编辑:这是查看页面的 HTML 源代码

  <form action="/cca/admin/FileUpload/batchupload" id="FileUploadBatchuploadForm" enctype="multipart/form-data" method="post" accept-charset="utf-8"><div style="display:none;"><input type="hidden" name="_method" value="POST"/></div>    <fieldset>
  <div class="input select required"><label for="FileUploadManufacturerId">Manufacturer</label><select name="data[FileUpload][manufacturer_id]" id="FileUploadManufacturerId">
    <option value="1">man1</option>
    <option value="4" selected="selected">man2</option>
  </select></div>       

  <input type="file" name="data[FileUpload][userfile]"  type="file" value="test.csv" id="FileUploadUserfile"/>  </fieldset>
  <div class="submit"><input  type="submit" value="Upload"/></div></form>          </div><!--end scrollArea div --> 

php设置:

asp_tags: off  
file_uploads: On  
max_execution_time: 30  
max_input_time: 60  
memory_limit: 32M  
register_globals: Off  
safe_mode: Off  
session.save_path: /tmp  
upload_max_filesize: 2M  

edit: php_info()
System  Linux host.com 2.6.32-220.7.1.el6.x86_64 #1 SMP Wed Mar 7 00:52:02 GMT 2012 x86_64  
Build Date  Jun 20 2012 12:07:38  
Configure Command    './configure' '--disable-fileinfo' '--enable-bcmath' '--enable-calendar' '--enable-ftp' '--enable-libxml' '--enable-magic-quotes' '--enable-mbstring' '--enable-pdo=shared' '--enable-sockets' '--prefix=/usr' '--with-curl=/opt/curlssl/' '--with-gd' '--with-imap=/opt/php_with_imap_client/' '--with-imap-ssl=/usr' '--with-jpeg-dir=/usr' '--with-kerberos' '--with-libdir=lib64' '--with-libxml-dir=/opt/xml2/' '--with-mcrypt=/opt/libmcrypt/' '--with-mysql=/usr' '--with-mysql-sock=/var/lib/mysql/mysql.sock' '--with-openssl=/usr' '--with-openssl-dir=/usr' '--with-pcre-regex=/opt/pcre' '--with-pdo-mysql=shared' '--with-pdo-sqlite=shared' '--with-pic' '--with-png-dir=/usr' '--with-sqlite=shared' '--with-xpm-dir=/usr' '--with-zlib' '--with-zlib-dir=/usr'  
Server API  CGI/FastCGI  
Virtual Directory Support   disabled  
Configuration File (php.ini) Path   /usr/lib  
Loaded Configuration File   /usr/local/lib/php.ini  
Scan this dir for additional .ini files (none)  
Additional .ini files parsed    (none)  
PHP API 20090626  
PHP Extension   20090626  
Zend Extension  220090626  
Zend Extension Build    API220090626,NTS  
PHP Extension Build API20090626,NTS  
Debug Build no  
Thread Safety   disabled  
Zend Memory Manager enabled  
Zend Multibyte Support  disabled  
IPv6 Support    enabled  
Registered PHP Streams  https, ftps, compress.zlib, php, file, glob, data, http, ftp, phar  
Registered Stream Socket Transports tcp, udp, unix, udg, ssl, sslv3, sslv2, tls  
Registered Stream Filters   zlib.*, convert.iconv.*, mcrypt.*, mdecrypt.*, string.rot13, string.toupper, string.tolower, string.strip_tags, convert.*, consumed, dechunk  

This program makes use of the Zend Scripting Language Engine:  
Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies  
    with the ionCube PHP Loader v4.0.12, Copyright (c) 2002-2011, by ionCube Ltd.  

PHP Credits  
Configuration  
bcmath  
BCMath support  enabled  

Directive   Local Value Master Value  
bcmath.scale    0   0  

calendar  
Calendar support    enabled  

cgi-fcgi  
Directive   Local Value Master Value  
cgi.check_shebang_line  1   1  
cgi.discard_path    0   0  
cgi.fix_pathinfo    1   1  
cgi.force_redirect  1   1  
cgi.nph 0   0  
cgi.redirect_status_env no value    no value  
cgi.rfc2616_headers 0   0  
fastcgi.logging 1   1  

Core  
PHP Version 5.3.10  

Directive   Local Value Master Value  
allow_call_time_pass_reference  On  On  
allow_url_fopen On  On  
allow_url_include   Off Off  
always_populate_raw_post_data   Off Off  
arg_separator.input &   &  
arg_separator.output    &   &  
asp_tags    Off Off  
auto_append_file    no value    no value  
auto_globals_jit    On  On  
auto_prepend_file   no value    no value  
browscap    no value    no value  
default_charset no value    no value  
default_mimetype    text/html   text/html  
define_syslog_variables Off Off  
disable_classes no value    no value  
disable_functions   no value    no value  
display_errors  On  On  
display_startup_errors  Off Off  
doc_root    no value    no value  
docref_ext  no value    no value  
docref_root no value    no value  
enable_dl   On  On  
error_append_string no value    no value  
error_log   no value    no value  
error_prepend_string    no value    no value  
error_reporting 22527   22519  
exit_on_timeout Off Off  
expose_php  On  On  
extension_dir   /usr/local/lib/php/extensions/no-debug-non-zts-20090626 /usr/local/lib/php/extensions/no-debug-non-zts-20090626  
file_uploads    On  On  
highlight.bg    #FFFFFF #FFFFFF  
highlight.comment   #FF8000 #FF8000  
highlight.default   #0000BB #0000BB  
highlight.html  #000000 #000000  
highlight.keyword   #007700 #007700  
highlight.string    #DD0000 #DD0000  
html_errors On  On  
ignore_repeated_errors  Off Off  
ignore_repeated_source  Off Off  
ignore_user_abort   Off Off  
implicit_flush  Off Off  
include_path    /home/testroot/public_html/test/cca/lib:.:/usr/lib/php:/usr/local/lib/php   .:/usr/lib/php:/usr/local/lib/php  
log_errors  Off Off  
log_errors_max_len  1024    1024  
magic_quotes_gpc    On  On  
magic_quotes_runtime    Off Off  
magic_quotes_sybase Off Off  
mail.add_x_header   Off Off  
mail.force_extra_parameters no value    no value  
mail.log    no value    no value  
max_execution_time  30  30  
max_file_uploads    20  20  
max_input_nesting_level 64  64  
max_input_time  60  60  
max_input_vars  1000    1000  
memory_limit    32M 32M  
open_basedir    no value    no value  
output_buffering    no value    no value  
output_handler  no value    no value  
post_max_size   8M  8M  
precision   12  12  
realpath_cache_size 16K 16K  
realpath_cache_ttl  120 120  
register_argc_argv  On  On  
register_globals    Off Off  
register_long_arrays    On  On  
report_memleaks On  On  
report_zend_debug   On  On  
request_order   no value    no value  
safe_mode   Off Off  
safe_mode_exec_dir  /usr/local/php/bin  /usr/local/php/bin  
safe_mode_gid   Off Off  
safe_mode_include_dir   no value    no value  
sendmail_from   no value    no value  
sendmail_path   /usr/sbin/sendmail -t -i    /usr/sbin/sendmail -t -i   
serialize_precision 100 100  
short_open_tag  On  On  
SMTP    localhost   localhost  
smtp_port   25  25  
sql.safe_mode   Off Off  
track_errors    Off Off  
unserialize_callback_func   no value    no value  
upload_max_filesize 2M  2M  
upload_tmp_dir  no value    no value  
user_dir    no value    no value  
user_ini.cache_ttl  300 300  
user_ini.filename   .user.ini   .user.ini  
variables_order EGPCS   EGPCS  
xmlrpc_error_number 0   0  
xmlrpc_errors   Off Off  
y2k_compliance  On  On  
zend.enable_gc  On  On  

ctype  
ctype functions enabled  

curl  
cURL support    enabled  
cURL Information    7.24.0  
Age 3  
Features  
AsynchDNS   No  
Debug   No  
GSS-Negotiate   No  
IDN Yes  
IPv6    Yes  
Largefile   Yes  
NTLM    Yes  
SPNEGO  No  
SSL Yes  
SSPI    No  
krb4    No  
libz    Yes  
CharConv    No  
Protocols   dict, file, ftp, ftps, gopher, http, https, imap, imaps, pop3, pop3s, rtsp, smtp, smtps, telnet, tftp  
Host    x86_64-unknown-linux-gnu  
SSL Version OpenSSL/1.0.0  
ZLib Version    1.2.3  

date  
date/time support   enabled  
"Olson" Timezone Database Version   2012.3  
Timezone Database   external  
Default timezone    America/New_York  

Directive   Local Value Master Value  
date.default_latitude   31.7667 31.7667  
date.default_longitude  35.2333 35.2333  
date.sunrise_zenith 90.583333   90.583333  
date.sunset_zenith  90.583333   90.583333  
date.timezone   America/New_York    America/New_York  

dom  
DOM/XML enabled  
DOM/XML API Version 20031129  
libxml Version  2.7.8  
HTML Support    enabled  
XPath Support   enabled  
XPointer Support    enabled  
Schema Support  enabled  
RelaxNG Support enabled  

ereg  
Regex Library   Bundled library enabled  

filter  
Input Validation and Filtering  enabled  
Revision    $Revision: 321634 $  

Directive   Local Value Master Value  
filter.default  unsafe_raw  unsafe_raw  
filter.default_flags    no value    no value  

ftp  
FTP support enabled  

gd  
GD Support  enabled  
GD Version  bundled (2.0.34 compatible)  
GIF Read Support    enabled  
GIF Create Support  enabled  
JPEG Support    enabled  
libJPEG Version 6b  
PNG Support enabled  
libPNG Version  1.2.49  
WBMP Support    enabled  
XPM Support enabled  
XBM Support enabled  

Directive   Local Value Master Value  
gd.jpeg_ignore_warning  0   0  

hash  
hash support    enabled  
Hashing Engines md2 md4 md5 sha1 sha224 sha256 sha384 sha512 ripemd128 ripemd160 ripemd256 ripemd320 whirlpool tiger128,3 tiger160,3 tiger192,3 tiger128,4 tiger160,4 tiger192,4 snefru snefru256 gost adler32 crc32 crc32b salsa10 salsa20 haval128,3 haval160,3 haval192,3 haval224,3 haval256,3 haval128,4 haval160,4 haval192,4 haval224,4 haval256,4 haval128,5 haval160,5 haval192,5 haval224,5 haval256,5  

iconv  
iconv support   enabled  
iconv implementation    glibc  
iconv library version   2.12  

Directive   Local Value Master Value  
iconv.input_encoding    ISO-8859-1  ISO-8859-1  
iconv.internal_encoding ISO-8859-1  ISO-8859-1  
iconv.output_encoding   ISO-8859-1  ISO-8859-1  

imap  
IMAP c-Client Version   2007f  
SSL Support enabled  
Kerberos Support    enabled  

json  
json support    enabled  
json version    1.2.1  

libxml  
libXML support  active  
libXML Compiled Version 2.7.8  
libXML Loaded Version   20708  
libXML streams  enabled  

mbstring  
Multibyte Support   enabled  
Multibyte string engine libmbfl  
HTTP input encoding translation disabled  

mbstring extension makes use of "streamable kanji code filter and converter", which is distributed under the GNU Lesser General Public License version 2.1.  

Multibyte (japanese) regex support  enabled  
Multibyte regex (oniguruma) backtrack check On  
Multibyte regex (oniguruma) version 4.7.1  

Directive   Local Value Master Value  
mbstring.detect_order   no value    no value  
mbstring.encoding_translation   Off Off  
mbstring.func_overload  0   0  
mbstring.http_input pass    pass  
mbstring.http_output    pass    pass  
mbstring.http_output_conv_mimetypes ^(text/|application/xhtml\+xml) ^(text/|application/xhtml\+xml)  
mbstring.internal_encoding  no value    no value  
mbstring.language   neutral neutral  
mbstring.strict_detection   Off Off  
mbstring.substitute_character   no value    no value  

mcrypt  
mcrypt support  enabled  
mcrypt_filter support   enabled  
Version 2.5.8  
Api No  20021217  
Supported ciphers   cast-128 gost rijndael-128 twofish arcfour cast-256 loki97 rijndael-192 saferplus wake blowfish-compat des rijndael-256 serpent xtea blowfish enigma rc2 tripledes  
Supported modes cbc cfb ctr ecb ncfb nofb ofb stream  

Directive   Local Value Master Value  
mcrypt.algorithms_dir   no value    no value  
mcrypt.modes_dir    no value    no value  

mysql  
MySQL Support   enabled  
Active Persistent Links 0  
Active Links    0  
Client API version  5.0.96  
MYSQL_MODULE_TYPE   external  
MYSQL_SOCKET    /var/lib/mysql/mysql.sock  
MYSQL_INCLUDE   -I/usr/include/mysql  
MYSQL_LIBS  -L/usr/lib64 -lmysqlclient  

Directive   Local Value Master Value  
mysql.allow_local_infile    On  On  
mysql.allow_persistent  On  On  
mysql.connect_timeout   60  60  
mysql.default_host  no value    no value  
mysql.default_password  no value    no value  
mysql.default_port  no value    no value  
mysql.default_socket    /var/lib/mysql/mysql.sock   /var/lib/mysql/mysql.sock  
mysql.default_user  no value    no value  
mysql.max_links Unlimited   Unlimited  
mysql.max_persistent    Unlimited   Unlimited  
mysql.trace_mode    Off Off  

openssl  
OpenSSL support enabled  
OpenSSL Library Version OpenSSL 1.0.0-fips 29 Mar 2010  
OpenSSL Header Version  OpenSSL 1.0.0-fips 29 Mar 2010  

pcre  
PCRE (Perl Compatible Regular Expressions) Support  enabled  
PCRE Library Version    8.21 2011-12-12  

Directive   Local Value Master Value  
pcre.backtrack_limit    1000000 1000000  
pcre.recursion_limit    100000  100000  

PDO  
PDO support enabled  
PDO drivers sqlite, sqlite2, mysql  

pdo_mysql  
PDO Driver for MySQL    enabled  
Client API version  5.0.96  

Directive   Local Value Master Value  
pdo_mysql.default_socket    /var/lib/mysql/mysql.sock   /var/lib/mysql/mysql.sock  

pdo_sqlite  
PDO Driver for SQLite 3.x   enabled  
SQLite Library  3.7.7.1  

Phar  
Phar: PHP Archive support   enabled  
Phar EXT version    2.0.1  
Phar API version    1.1.1  
SVN revision    $Revision: 321634 $  
Phar-based phar archives    enabled  
Tar-based phar archives enabled  
ZIP-based phar archives enabled  
gzip compression    enabled  
bzip2 compression   disabled (install pecl/bz2)  
OpenSSL support enabled  

Phar based on pear/PHP_Archive, original concept by Davey Shafik.  
Phar fully realized by Gregory Beaver and Marcus Boerger.  
Portions of tar implementation Copyright (c) 2003-2009 Tim Kientzle.  

Directive   Local Value Master Value  
phar.cache_list no value    no value  
phar.readonly   On  On  
phar.require_hash   On  On  

posix  
Revision    $Revision: 321634 $  

Reflection  
Reflection  enabled  
Version $Revision: 321634 $  

session  
Session Support enabled  
Registered save handlers    files user sqlite  
Registered serializer handlers  php php_binary  

Directive   Local Value Master Value  
session.auto_start  Off Off  
session.bug_compat_42   On  On  
session.bug_compat_warn On  On  
session.cache_expire    180 180  
session.cache_limiter   must-revalidate nocache  
session.cookie_domain   no value    no value  
session.cookie_httponly On  Off  
session.cookie_lifetime 14400   0  
session.cookie_path /   /  
session.cookie_secure   Off Off  
session.entropy_file    no value    no value  
session.entropy_length  0   0  
session.gc_divisor  100 100  
session.gc_maxlifetime  14400   1440  
session.gc_probability  1   1  
session.hash_bits_per_character 4   4  
session.hash_function   0   0  
session.name    CAKEPHP PHPSESSID  
session.referer_check   no value    no value  
session.save_handler    files   files  
session.save_path   /tmp    /tmp  
session.serialize_handler   php php  
session.use_cookies On  On  
session.use_only_cookies    On  On  
session.use_trans_sid   0   0  

SimpleXML  
Simplexml support   enabled  
Revision    $Revision: 321634 $  
Schema support  enabled  

sockets  
Sockets Support enabled  

SPL  
SPL support enabled  
Interfaces  Countable, OuterIterator, RecursiveIterator, SeekableIterator, SplObserver, SplSubject  
Classes AppendIterator, ArrayIterator, ArrayObject, BadFunctionCallException, BadMethodCallException, CachingIterator, DirectoryIterator, DomainException, EmptyIterator, FilesystemIterator, FilterIterator, GlobIterator, InfiniteIterator, InvalidArgumentException, IteratorIterator, LengthException, LimitIterator, LogicException, MultipleIterator, NoRewindIterator, OutOfBoundsException, OutOfRangeException, OverflowException, ParentIterator, RangeException, RecursiveArrayIterator, RecursiveCachingIterator, RecursiveDirectoryIterator, RecursiveFilterIterator, RecursiveIteratorIterator, RecursiveRegexIterator, RecursiveTreeIterator, RegexIterator, RuntimeException, SplDoublyLinkedList, SplFileInfo, SplFileObject, SplFixedArray, SplHeap, SplMinHeap, SplMaxHeap, SplObjectStorage, SplPriorityQueue, SplQueue, SplStack, SplTempFileObject, UnderflowException, UnexpectedValueException  

SQLite  
SQLite support  enabled  
PECL Module version 2.0-dev $Id: sqlite.c 321634 2012-01-01 13:15:04Z felipe $  
SQLite Library  2.8.17  
SQLite Encoding iso8859  

Directive   Local Value Master Value  
sqlite.assoc_case   0   0  

sqlite3  
SQLite3 support enabled  
SQLite3 module version  0.7-dev  
SQLite Library  3.7.7.1  

Directive   Local Value Master Value  
sqlite3.extension_dir   no value    no value  

standard  
Dynamic Library Support enabled  
Path to sendmail    /usr/sbin/sendmail -t -i  

Directive   Local Value Master Value  
assert.active   1   1  
assert.bail 0   0  
assert.callback no value    no value  
assert.quiet_eval   0   0  
assert.warning  1   1  
auto_detect_line_endings    1   0  
default_socket_timeout  60  60  
from    no value    no value  
safe_mode_allowed_env_vars  PHP_    PHP_  
safe_mode_protected_env_vars    LD_LIBRARY_PATH LD_LIBRARY_PATH  
url_rewriter.tags   a=href,area=href,frame=src,input=src,form=,fieldset=    a=href,area=href,frame=src,input=src,form=,fieldset=  
user_agent  no value    no value  

timezonedb  
Alternative Timezone Database   enabled  
Timezone Database Version   2012.3  

tokenizer  
Tokenizer Support   enabled  

XCache  
XCache Support  enabled  
Version 1.3.2  
Modules Built   cacher  
Readonly Protection N/A  
Cache Init Time 1969-12-31 19:00:00  
Cache Instance Id   0  
Opcode Cache    disabled  
Variable Cache  disabled  
Shared Memory Schemes   mmap  

Directive   Local Value Master Value  
xcache.admin.enable_auth    On  On  
xcache.cacher   On  On  
xcache.coredump_directory   no value    no value  
xcache.count    1   1  
xcache.gc_interval  0   0  
xcache.mmap_path    /dev/zero   /dev/zero  
xcache.readonly_protection  Off Off  
xcache.shm_scheme   mmap    mmap  
xcache.size 0   0  
xcache.slots    8K  8K  
xcache.stat On  On  
xcache.test Off Off  
xcache.ttl  0   0  
xcache.var_count    1   1  
xcache.var_gc_interval  300 300  
xcache.var_maxttl   0   0  
xcache.var_size 0   0  
xcache.var_slots    8K  8K  
xcache.var_ttl  0   0  

xml  
XML Support active  
XML Namespace Support   active  
libxml2 Version 2.7.8  

xmlreader  
XMLReader   enabled  

xmlwriter  
XMLWriter   enabled  

zlib  
ZLib Support    enabled  
Stream Wrapper support  compress.zlib://  
Stream Filter support   zlib.inflate, zlib.deflate  
Compiled Version    1.2.3  
Linked Version  1.2.3  

Directive   Local Value Master Value  
zlib.output_compression Off Off  
zlib.output_compression_level   -1  -1  
zlib.output_handler no value    no value  

Additional Modules  
Module Name  
ionCube Loader  

Environment  
Variable    Value  
CONTENT_LENGTH  143  
CONTENT_TYPE    application/x-www-form-urlencoded  
DOCUMENT_ROOT   /home/testroot/public_html/test  
GATEWAY_INTERFACE   CGI/1.1  
HTTP_ACCEPT text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8  
HTTP_ACCEPT_CHARSET ISO-8859-1,utf-8;q=0.7,*;q=0.3  
HTTP_ACCEPT_ENCODING    gzip,deflate,sdch  
HTTP_ACCEPT_LANGUAGE    en-US,en;q=0.8  
HTTP_CACHE_CONTROL  max-age=0  
HTTP_CONNECTION keep-alive  
HTTP_COOKIE CAKEPHP=5020f56a61a93df0ceb04d77a4b3128a  
HTTP_HOST   test.com  
HTTP_ORIGIN http://test.com  
HTTP_REFERER    http://test.com/cca/admin/fileupload/batchupload  
HTTP_USER_AGENT Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.94 Safari/537.4  
PATH    /bin:/usr/bin  
QUERY_STRING    no value  
REDIRECT_REDIRECT_STATUS    200  
REDIRECT_REDIRECT_UNIQUE_ID UIrSAzIcP7sAAGUegKQAAAAJ  
REDIRECT_STATUS 200  
REDIRECT_UNIQUE_ID  UIrSAzIcP7sAAGUegKQAAAAJ  
REDIRECT_URL    /cca/app/webroot/admin/fileupload/batchupload  
REMOTE_ADDR 12.231.219.14  
REMOTE_PORT 3274  
REQUEST_METHOD  POST  
REQUEST_URI /cca/admin/fileupload/batchupload  
SCRIPT_FILENAME /home/testroot/public_html/test/cca/app/webroot/index.php  
SCRIPT_NAME /cca/app/webroot/index.php  
SERVER_ADDR 50.28.63.187  
SERVER_ADMIN    webmaster@test.com  
SERVER_NAME test.com  
SERVER_PORT 80  
SERVER_PROTOCOL HTTP/1.1  
SERVER_SIGNATURE    <address>Apache/2.2.22 (Unix) mod_ssl/2.2.22 OpenSSL/1.0.0-fips mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635 Server at test.com Port 80</address>  
SERVER_SOFTWARE Apache/2.2.22 (Unix) mod_ssl/2.2.22 OpenSSL/1.0.0-fips mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635  
UNIQUE_ID   UIrSAzIcP7sAAGUegKQAAAAJ  

PHP Variables  
Variable    Value  
_REQUEST["_method"] POST  
_REQUEST["data"]      
Array  
(  
    [FileUpload] => Array  
        (  
            [querystring] =>   
            [manufacturer_id] => 1  
            [userfile] => test.csv  
        )  

)  
_REQUEST["CAKEPHP"] 5020f56a61a93df0ceb04d77a4b3128a  
_POST["_method"]    POST  
_POST["data"]     
Array  
(  
    [FileUpload] => Array  
        (  
            [querystring] =>   
            [manufacturer_id] => 1  
            [userfile] => test.csv  
        )  

)  
_COOKIE["CAKEPHP"]  5020f56a61a93df0ceb04d77a4b3128a  
_SERVER["CONTENT_LENGTH"]   143  
_SERVER["CONTENT_TYPE"] application/x-www-form-urlencoded  
_SERVER["DOCUMENT_ROOT"]    /home/testroot/public_html/test  
_SERVER["GATEWAY_INTERFACE"]    CGI/1.1  
_SERVER["HTTP_ACCEPT"]  text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8  
_SERVER["HTTP_ACCEPT_CHARSET"]  ISO-8859-1,utf-8;q=0.7,*;q=0.3  
_SERVER["HTTP_ACCEPT_ENCODING"] gzip,deflate,sdch  
_SERVER["HTTP_ACCEPT_LANGUAGE"] en-US,en;q=0.8  
_SERVER["HTTP_CACHE_CONTROL"]   max-age=0  
_SERVER["HTTP_CONNECTION"]  keep-alive  
_SERVER["HTTP_COOKIE"]  CAKEPHP=5020f56a61a93df0ceb04d77a4b3128a  
_SERVER["HTTP_HOST"]    test.com  
_SERVER["HTTP_ORIGIN"]  http://test.com  
_SERVER["HTTP_REFERER"] http://test.com/cca/admin/fileupload/batchupload  
_SERVER["HTTP_USER_AGENT"]  Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.94 Safari/537.4  
_SERVER["PATH"] /bin:/usr/bin  
_SERVER["QUERY_STRING"] no value  
_SERVER["REDIRECT_REDIRECT_STATUS"] 200  
_SERVER["REDIRECT_REDIRECT_UNIQUE_ID"]  UIrSAzIcP7sAAGUegKQAAAAJ  
_SERVER["REDIRECT_STATUS"]  200  
_SERVER["REDIRECT_UNIQUE_ID"]   UIrSAzIcP7sAAGUegKQAAAAJ  
_SERVER["REDIRECT_URL"] /cca/app/webroot/admin/fileupload/batchupload  
_SERVER["REMOTE_ADDR"]  12.231.219.14  
_SERVER["REMOTE_PORT"]  3274  
_SERVER["REQUEST_METHOD"]   POST  
_SERVER["REQUEST_URI"]  /cca/admin/fileupload/batchupload  
_SERVER["SCRIPT_FILENAME"]  /home/testroot/public_html/test/cca/app/webroot/index.php  
_SERVER["SCRIPT_NAME"]  /cca/app/webroot/index.php  
_SERVER["SERVER_ADDR"]  50.28.63.187  
_SERVER["SERVER_ADMIN"] webmaster@test.com  
_SERVER["SERVER_NAME"]  test.com  
_SERVER["SERVER_PORT"]  80  
_SERVER["SERVER_PROTOCOL"]  HTTP/1.1  
_SERVER["SERVER_SIGNATURE"] <address>Apache/2.2.22 (Unix) mod_ssl/2.2.22 OpenSSL/1.0.0-fips mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635 Server at test.com Port 80</address>  
_SERVER["SERVER_SOFTWARE"]  Apache/2.2.22 (Unix) mod_ssl/2.2.22 OpenSSL/1.0.0-fips mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635  
_SERVER["UNIQUE_ID"]    UIrSAzIcP7sAAGUegKQAAAAJ  
_SERVER["PHP_SELF"] /cca/app/webroot/index.php  
_SERVER["REQUEST_TIME"] 1351275011  
_SERVER["argv"]   
Array  
(  
)  
_SERVER["argc"] 0  
_ENV["CONTENT_LENGTH"]  143  
_ENV["CONTENT_TYPE"]    application/x-www-form-urlencoded  
_ENV["DOCUMENT_ROOT"]   /home/testroot/public_html/test  
_ENV["GATEWAY_INTERFACE"]   CGI/1.1  
_ENV["HTTP_ACCEPT"] text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8  
_ENV["HTTP_ACCEPT_CHARSET"] ISO-8859-1,utf-8;q=0.7,*;q=0.3  
_ENV["HTTP_ACCEPT_ENCODING"]    gzip,deflate,sdch  
_ENV["HTTP_ACCEPT_LANGUAGE"]    en-US,en;q=0.8  
_ENV["HTTP_CACHE_CONTROL"]  max-age=0  
_ENV["HTTP_CONNECTION"] keep-alive  
_ENV["HTTP_COOKIE"] CAKEPHP=5020f56a61a93df0ceb04d77a4b3128a  
_ENV["HTTP_HOST"]   test.com  
_ENV["HTTP_ORIGIN"] http://test.com  
_ENV["HTTP_REFERER"]    http://test.com/cca/admin/fileupload/batchupload  
_ENV["HTTP_USER_AGENT"] Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.94 Safari/537.4  
_ENV["PATH"]    /bin:/usr/bin  
_ENV["QUERY_STRING"]    no value  
_ENV["REDIRECT_REDIRECT_STATUS"]    200  
_ENV["REDIRECT_REDIRECT_UNIQUE_ID"] UIrSAzIcP7sAAGUegKQAAAAJ  
_ENV["REDIRECT_STATUS"] 200  
_ENV["REDIRECT_UNIQUE_ID"]  UIrSAzIcP7sAAGUegKQAAAAJ  
_ENV["REDIRECT_URL"]    /cca/app/webroot/admin/fileupload/batchupload  
_ENV["REMOTE_ADDR"] 12.231.219.14  
_ENV["REMOTE_PORT"] 3274  
_ENV["REQUEST_METHOD"]  POST  
_ENV["REQUEST_URI"] /cca/admin/fileupload/batchupload  
_ENV["SCRIPT_FILENAME"] /home/testroot/public_html/test/cca/app/webroot/index.php  
_ENV["SCRIPT_NAME"] /cca/app/webroot/index.php  
_ENV["SERVER_ADDR"] 50.28.63.187  
_ENV["SERVER_ADMIN"]    webmaster@test.com  
_ENV["SERVER_NAME"] test.com  
_ENV["SERVER_PORT"] 80  
_ENV["SERVER_PROTOCOL"] HTTP/1.1  
_ENV["SERVER_SIGNATURE"]    <address>Apache/2.2.22 (Unix) mod_ssl/2.2.22 OpenSSL/1.0.0-fips mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635 Server at test.com Port 80</address>  
_ENV["SERVER_SOFTWARE"] Apache/2.2.22 (Unix) mod_ssl/2.2.22 OpenSSL/1.0.0-fips mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635  
_ENV["UNIQUE_ID"]   UIrSAzIcP7sAAGUegKQAAAAJ  
4

2 回答 2

2

你有没有看过詹姆斯在这里是怎么做到的?我知道它的早期版本,但可能会提供一些见解。http://www.jamesfairhurst.co.uk/posts/view/uploading_files_and_images_with_cakephp

于 2012-10-26T19:18:51.623 回答
2

通常在通过表单上传文件时(这不仅仅与 cakephp 有关),我会检查以下内容:

  • 确保您在表单标签中指定了“enctype=multipart/form-data”,否则文件将无法通过
  • 接下来我会做一个 print_r($_FILES),它应该包含有关上传文件的信息
  • 如果以上两点都正确,但文件没有开始保存,请确保检查您保存到的文件夹是否具有读/写权限(您可以使用FTP客户端更改文件夹的权限)

在您的情况下,我相信使用 var_dump($this->request->data['FileUpload']['userfile']) 会更好地检查类型。gettype 有一个很大的警告不要用它来检查类型(它显示在我的翻译版本上 - http://php.net/manual/ro/function.gettype.php,但不在英文版本上 - http://php .net/manual/en/function.gettype.php)。

使用 cakephp 上传文件时,我使用类似这样的方法为新闻模块上传图片:

if (!empty($this->data['News']['image_file'])) {
$image_filename = $this->FileManager->uploadFiles('news/images/', array($this->data['News']['image_file']), array('jpg','jpeg','gif','png'));
}

然后我有这样的东西作为 FileManager 组件:

<?php 

class FileManagerComponent extends Object {

    /**
     * Function used for renaming files
     *
     * @param string $path
     * @return string
     */
    public function getOptimizedURL($filename) {

        $output = ereg_replace("[^[:alnum:]]", "-", strtolower($filename));
        $output = ereg_replace("[-]+", "-", $output);

        return $output;

    } // end of getOptimizedURL() method


    /**
     * Upload files to the server
     *
     * @param $folder     = the folder to upload the files e.g. 'img/files' 
     * @param $formdata   = the array containing the form files 
     * @return : false or name of the uploaded file
     */
    public function uploadFiles($folder, $formdata, $extensions = array()) {

        $error = true;

        // setup dir names absolute and relative
        $folder_url = DIR_RESOURCES.$folder;
        $rel_url = $folder;

        // create the folder if it does not exist
        if(!is_dir($folder_url)) {
            mkdir($folder_url);
            chmod($folder_url,0777);
        }

        // loop through and deal with the files
        foreach ($formdata as $file) {

            // create unique file name
            $arrFilename = explode(".", $file['name']);
            $filename = $this->getOptimizedURL($arrFilename[0].'-'.time()).'.'.end($arrFilename);

            // -------------------------------------------- //

            // check file extension
            if (empty($extensions) || in_array(end($arrFilename), $extensions)) {

                // switch based on error code
                if ($file['error'] == 0) {

                    // create full filename
                    $full_url = $folder_url.'/'.$filename;
                    $url = $rel_url.'/'.$filename;

                    // upload the file
                    $success = move_uploaded_file($file['tmp_name'], $full_url);
                    $error = false;
                }
            }

            // -------------------------------------------- //
        }

        if (!$error)
            return $filename;
        else 
            return false;

    } // end of uploadFiles() method

}

FileManager 组件还应该:

  • 检查错误

  • 确保文件名唯一,以免文件被覆盖

  • 如果文件夹不存在,则创建该文件夹并设置其权限

它是为 cake1.3 编写的,但是文件上传应该可以工作。

于 2012-10-26T20:10:28.910 回答