public function testHasFiles() { $request = new \Phalcon\Http\Request(); $_FILES = array('test' => array('name' => 'name', 'type' => 'text/plain', 'size' => 1, 'tmp_name' => 'tmp_name', 'error' => 0)); $this->assertEquals($request->hasFiles(false), 1); $this->assertEquals($request->hasFiles(true), 1); $_FILES = array('test' => array('name' => array('name1', 'name2'), 'type' => array('text/plain', 'text/plain'), 'size' => array(1, 1), 'tmp_name' => array('tmp_name1', 'tmp_name2'), 'error' => array(0, 0))); $this->assertEquals($request->hasFiles(false), 2); $this->assertEquals($request->hasFiles(true), 2); $_FILES = array('photo' => array('name' => array(0 => '', 1 => '', 2 => array(0 => '', 1 => '', 2 => ''), 3 => array(0 => ''), 4 => array(0 => array(0 => '')), 5 => array(0 => array(0 => array(0 => array(0 => ''))))), 'type' => array(0 => '', 1 => '', 2 => array(0 => '', 1 => '', 2 => ''), 3 => array(0 => ''), 4 => array(0 => array(0 => '')), 5 => array(0 => array(0 => array(0 => array(0 => ''))))), 'tmp_name' => array(0 => '', 1 => '', 2 => array(0 => '', 1 => '', 2 => ''), 3 => array(0 => ''), 4 => array(0 => array(0 => '')), 5 => array(0 => array(0 => array(0 => array(0 => ''))))), 'error' => array(0 => 4, 1 => 4, 2 => array(0 => 4, 1 => 4, 2 => 4), 3 => array(0 => 4), 4 => array(0 => array(0 => 4)), 5 => array(0 => array(0 => array(0 => array(0 => 4))))), 'size' => array(0 => 0, 1 => 0, 2 => array(0 => 0, 1 => 0, 2 => 0), 3 => array(0 => 0), 4 => array(0 => array(0 => 0)), 5 => array(0 => array(0 => array(0 => array(0 => 0)))))), 'test' => array('name' => '', 'type' => '', 'tmp_name' => '', 'error' => 4, 'size' => 0)); $this->assertEquals($request->hasFiles(false), 9); $this->assertEquals($request->hasFiles(true), 0); }
function uploads($upload_dir, $size = 2097152, $type = array('jpg', 'png')) { $request = new \Phalcon\Http\Request(); if (true != $request->isPost()) { return false; } if ($request->hasFiles()) { $upload_dir = trim($upload_dir, '/\\') . DIRECTORY_SEPARATOR . date('Y-m-d'); if (!file_exists($upload_dir)) { mkdir($upload_dir, 777, true); } $php_post_max_size = (int) ini_get('post_max_size') * 1024 * 1024; $php_upload_max_filesize = (int) ini_get('upload_max_filesize') * 1024 * 1024; if ($php_post_max_size < $size) { logWarning('PHP php_post_max_size < uploads\'s Size'); throw new \Exception('php.ini php_post_max_size 上传文件大小未设置'); } if ($php_upload_max_filesize < $size) { logWarning('PHP php_upload_max_filesize < uploads\'s Size'); throw new \Exception('php.ini php_upload_max_filesize 上传文件大小未设置'); } foreach ($request->getUploadedFiles() as $file) { if ($file->getError() != 0) { continue; } if (!in_array($file->getExtension(), $type)) { $upload_errors[] = array('error' => UPLOADS_ERROR_10001, 'key' => $file->getKey()); break; } if ($file->getSize() > $size) { $upload_errors[] = array('error' => UPLOADS_ERROR_10002, 'key' => $file->getKey()); break; } $file_name = uniqid() . time() . mt_rand(10000, 999999) . '.' . $file->getExtension(); if ($file->moveTo($upload_dir . DIRECTORY_SEPARATOR . $file_name)) { $files[$file->getKey()] = $upload_dir . DIRECTORY_SEPARATOR . $file_name; } } if (isset($upload_errors)) { if (isset($files)) { foreach ($files as $val) { if (!unlink(ROOT_DIR . DIRECTORY_SEPARATOR . $val)) { logWarning('delete upload file error ::' . $val); } } } return $upload_errors; } if (isset($files) && is_array($files) && count($files) > 0) { return $files; } } return false; }