---
title: "Feature: #83608 - PSR-14 event to modify resolved default upload folder"
manual: "TYPO3 Core Changelog"
version: "main"
permalink: "https://docs.typo3.org/permalink/changelog:feature-83608-1669634686"
source: "Changelog/12.3/Feature-83608-PSR-14EventToModifyResolvedDefaultUploadFolder.rst"
typo3-version: "12.3"
typo3-major: 12
type: "feature"
issue: 83608
forge: "https://forge.typo3.org/issues/83608"
tags: ["Backend", "PHP-API", "ext:core"]
rendered: "2026-09-18T17:00:34+00:00"
---

# Feature: #83608 - PSR-14 event to modify resolved default upload folder {#feature-83608-1669634686}

See [forge#83608](https://forge.typo3.org/issues/83608)

## Description {#description}

A new PSR-14 event `\TYPO3\CMS\Core\Resource\Event\AfterDefaultUploadFolderWasResolvedEvent`
has been added, which allows the default upload folder to be modified after it has
been resolved for the current page or user.

The new event can be used as a better alternative to the
`$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_userauthgroup.php']['getDefaultUploadFolder']`
hook, serving the same purpose.

The event features the following methods:

-   `getUploadFolder()` returns the currently resolved `$uploadFolder`
-   `setUploadFolder()` sets a new upload folder
-   `getPid()` returns the PID of the record we fetch the upload folder for
-   `getTable()` returns the table name of the record we fetch the upload folder for
-   `getFieldName()` returns the field name of the record we fetch the upload folder for

Registration of the event in your extension's `Services.yaml`:

**EXT:my_extension/Configuration/Services.yaml**

```yaml
MyVendor\MyExtension\Resource\EventListener\MyEventListener:
  tags:
    - name: event.listener
      identifier: 'my-extension/after-default-upload-folder-was-resolved-event-listener'
```

The corresponding event listener class:

**EXT:my_extension/Classes/Resources/EventListener/MyEventListener.php**

```php
namespace MyVendor\MyExtension\Resource\EventListener;

use TYPO3\CMS\Core\Resource\Event\AfterDefaultUploadFolderWasResolvedEvent;

final class MyEventListener
{
    public function __invoke(AfterDefaultUploadFolderWasResolvedEvent $event): void
    {
        $event->setUploadFolder($event->getUploadFolder()->getStorage()->getFolder('/'));
    }
}
```

## Impact {#impact}

As resolving the event was moved from `BackendUserAuthentication` to its own
`DefaultUploadFolderResolver` class, this event is now the preferred way
of modifying the default upload folder.
