Пример #1
0
 public function testRemoveEmptyFiles()
 {
     $files = [['name' => '__UNLINK__', 'type' => 'text/plain', 'tmp_name' => 'gs://bucket/foo1', 'error' => UPLOAD_ERR_OK, 'size' => 17], ['name' => 'somefile.txt', 'type' => 'text/plain', 'tmp_name' => 'gs://bucket/foo2', 'error' => UPLOAD_ERR_OK, 'size' => 17]];
     $expected = [['name' => '', 'type' => '', 'tmp_name' => '', 'error' => UPLOAD_ERR_NO_FILE, 'size' => 0], ['name' => 'somefile.txt', 'type' => 'text/plain', 'tmp_name' => 'gs://bucket/foo2', 'error' => UPLOAD_ERR_OK, 'size' => 17]];
     UnlinkUploads::removeEmptyFiles($files);
     $this->assertEquals($expected, $files);
 }
Пример #2
0
    // Ensure that the class autoloader is the first include.
    require_once 'google/appengine/runtime/autoloader.php';
    require_once 'google/appengine/runtime/Memcache.php';
    require_once 'google/appengine/runtime/Memcached.php';
    require_once 'google/appengine/api/mail/MailService.php';
    // Setup the Memcache session handler
    MemcacheSessionHandler::configure();
    if (!empty($_FILES)) {
        // TODO: b/13132830: Remove once feature releases.
        if (ini_get('google_app_engine.direct_file_upload')) {
            DirectUploadHandler::handle();
        }
        // TODO: b/13132830: Remove once feature releases.
        if (ini_get('google_app_engine.php_enable_unlink_unused_uploads')) {
            register_shutdown_function('google\\appengine\\runtime\\UnlinkUploads::shutdownHook', $_FILES);
            UnlinkUploads::removeEmptyFiles($_FILES);
        }
    }
    // Setup the GS stream wrapper
    $url_flags = STREAM_IS_URL;
    if (GAE_INCLUDE_REQUIRE_GS_STREAMS === 1) {
        // By clearing the STREAM_IS_URL flag we allow this stream handler to be
        // used in include & require calls.
        $url_flags = 0;
    }
    stream_wrapper_register('gs', '\\google\\appengine\\ext\\cloud_storage_streams\\CloudStorageStreamWrapper', $url_flags);
}
// Map core PHP function implementations to proper function names. All function
// implementations should be prefixed with an underscore. The implementations
// should be mapped to the real (un-prefixed) function name and lazy-loaded.
// The underscore prefixed functions may then be used for unit testing on an