Plupload for FE 

Classification

pluploadfe

Version

main

Language

en

Description

Manual covering TYPO3 extension pluploadfe

Keywords

upload, plupload, html5, flash, silverlight, files, forEditors, forDevelopers

Copyright

2026

Author

Felix Nagel

Email

info@felixnagel.com

License

This document is published under the Open Content License available from http://www.opencontent.org/opl.shtml

Rendered

Wed, 22 Apr 2026 07:45:53 +0000

The content of this document is related to TYPO3, a GNU/GPL CMS/Framework available from www.typo3.org.

Table of Contents

What does it do? 

This extension provides an API for using Plupload within your own extensions in order to upload even big files. When using the chunked upload feature even uploads bigger than your PHP limits are possible!

Basically I've implemented an eID / middleware to handle file uploads managed by simple configuration records. You are able to implement whatever is possible with Plupload by using TypoScript and template files.

The extension additionally provides a simple FE plugin to upload files with an nice jQuery widget which uses the best technology available on client side.

An API example to send big files by mail is available in TER, search for EXT:mailfiles. There is an integration with EXT:powermail too, search for EXT:pluploadfe_powermail.

What is Plupload? 

Cite from http://www.plupload.com/ :

“Plupload allows you to upload files using HTML5 Silverlight, Flash or normal forms, providing some unique features such as upload progress, image resizing and chunked uploads.

The developers of TinyMCE brings you Plupload, a highly usable upload handler for your Content Management Systems or similar.

Plupload is currently separated into a Core API and a jQuery upload queue widget this enables you to either use it out of the box or write your own custom implementation .”

What others say 

Installation guide by Jochen Weiland can be found here: https://jweiland.net/typo3-cms/showcase/pluploadfe.html and https://www.youtube.com/watch?v=VfVNMp7km70

Wolfgang Wagner did an introduction of this extension in his Twitch channel, take a look here: https://www.twitch.tv/videos/1997781074 or https://youtu.be/uzh8jgCqI5g?si=NS1JgluKexX3Fpxi&t=873

Configuration 

Reference for the configuration record (table tx_pluploadfe_config).

Property
title
Data type
string
Description
Title of the configuration file (not used in FE)
Default
fileadmin
Property
upload_path
Data type
filepath
Description
Filepath to upload files (required)

Default -

Property
extensions
Data type
Comma separated list
Description
Comma separated list of allowed file types (required)
Default
jpeg,jpg,gif,png,zip,rar,7zip,gz
Property
feuser_required
Data type
boolean
Description
If true a logged-in FE user is required in order to upload files
Default
true
Property
feuser_field
Data type
string
Description
If FE user is logged-in create a subdirectory by username or any of these: uid, pid, name, logindate, ...
Default
''
Property
save_session
Data type
boolean
Description
If the uploaded files should be available in the FE user session (key: 'tx_pluploadfe_files')
Default
false
Property
obscure_dir
Data type
boolean
Description
If true every file is pseudo secured by adding a 20 chars long random string directory to the upload path
Default
true
Property
check_mime
Data type
boolean
Description
Checks (real) MIME type after uploading file. Safety level depends on PHP version / server configuration. uploads (see
Default
true

Frontend Plugin 

Just add the FE plugin as usual and specify a configuration record.

Administration 

This extensions needs a configuration record, a template file and TypoScript configuration.

Installation 

  • Install via EM
  • Add the default static TypoScript config to your main TS template.
  • Make sure you have jQuery available

Template 

Just use any configuration suitable for your needs. There are some basic markers available which should be easy to understand by viewing the example template.

See here for what can be done by pluload.

Configuration 

This extension work out-of-the-box but if you like to use pluploadfe in your own extension via the API or by adding the FE plugin via TypoScript you will need to pass the following options.

Reference 

TypoScript reference for the extension.

Property
uid
Data type
string
Description
Any string or number as a identifier, use something like “ my_upload123
Default
-
Property
configUid
Data type
integer
Description
UID of the configuration record
Default
-
Property
templateFile
Data type
string
Description
Path to your template file
Default
EXT:pluploadfe/res/template.html

[tsref:plugin.tx_pluploadfe_pi1]

Developer Guide 

Target group: Developers

Integrating EXT:pluploafe in your own extensions 

Take a look at the following extension on how to integrate EXT:plupload in your extension:

Using Fluid ViewHelper 

TypoScript 

settings {
	pluploadfe < plugin.tx_pluploadfe_pi1
	pluploadfe {
        templateFile = EXT:example/Resources/Private/Templates/template.html
        configUid = 123
	}
}
Copied!

Template integration 

<html xmlns:plupload="http://typo3.org/ns/FelixNagel/Pluploadfe/ViewHelpers">
<plupload:render configUid="{settings.configUid}" settings="{settings.pluploadfe}" />
Copied!

Using TypoScript 

TypoScript 

lib.examplePluploadFe < plugin.tx_pluploadfe_pi1
lib.examplePluploadFe {
   templateFile = EXT:example/Resources/Private/Templates/template.html
   configUid = 123
}
Copied!

Template integration 

<f:cObject typoscriptObjectPath="lib.examplePluploadFe" />
Copied!

Gather data in controller 

Version 7.x and up

// Get saved files (by config record UID)
$files = $GLOBALS['TSFE']->fe_user->getKey('ses', 'tx_pluploadfe_123_files');

// Get saved messages (by config record UID)
$files = $GLOBALS['TSFE']->fe_user->getKey('ses', 'tx_pluploadfe_123_messages');

// Reset files in session
$this->getTsFeController()->fe_user->setKey('ses', 'tx_pluploadfe_123_files', '');
$this->getTsFeController()->fe_user->storeSessionData();
Copied!

Version 6.x

// Get saved files (all files or by config record UID)
$files = $GLOBALS['TSFE']->fe_user->getKey('ses', 'tx_pluploadfe_files');
$files = $GLOBALS['TSFE']->fe_user->getKey('ses', 'tx_pluploadfe_123_files');

// Get saved messages (by config record UID only)
$files = $GLOBALS['TSFE']->fe_user->getKey('ses', 'tx_pluploadfe_123_messages');

// Reset files in session
$this->getTsFeController()->fe_user->setKey('ses', 'tx_pluploadfe_files', '');
$this->getTsFeController()->fe_user->setKey('ses', 'tx_pluploadfe_123_files', '');
$this->getTsFeController()->fe_user->storeSessionData();
Copied!

Version 5.x and below

// Get saved files (all files)
$files = $GLOBALS['TSFE']->fe_user->getKey('ses', 'tx_pluploadfe_files');

// Reset files in session
$this->getTsFeController()->fe_user->setKey('ses', 'tx_pluploadfe_files', '');
$this->getTsFeController()->fe_user->storeSessionData();
Copied!

Plupload's chunked upload feature 

If you need to upload very big files, please try using the chunk_size option. Since version 1.1.0 of this extension the chunked upload feature of plupload is officially supported.

See plupload documentation for more information: http://plupload.com/docs/Chunking https://www.plupload.com/docs/v2/Options#chunk_size

It's recommended not to use too small chunks as each upload operation is expensive regarding performance (DB request, FE user check, etc.).

How to use it

Enable the chunk_size option in your template: https://github.com/fnagel/mailfiles/blob/fa7eb29683b5441eb827f358cec7ff035d9cb854/Resources/Private/Templates/template.html#L22C39-L22C41

Disable the max_file_size option in your template: https://github.com/fnagel/mailfiles/blob/fa7eb29683b5441eb827f358cec7ff035d9cb854/Resources/Private/Templates/template.html#L32

Upload limit 

Upload limit depends on following PHP limits:

  • post_max_size
  • upload_max_filesize
  • max_execution_time
  • max_input_time
  • memory_limit

Notice

If you need to upload very big files, please try using the chunked upload feature.

FE Plugin wont work 

As Plupload's jQuery UI Widget needs jQuery, jQuery UI and a few other CSS and JS files.

Using multiple JS frameworks or multiple versions of jQuery could cause errors. Please note that other TYPO3 Extensions may include JS files automatically.

Following best practice you should make sure to use only one JS framework and not to use multiple versions like jQuery 1.5 and jQuery 1.7. Another solution could be fallback mechanisms like jQuery's noConflict option. This is not recommended.

Please note It's not needed to use jQuery at all in order to make use of Plupload. Only the Plupload jQuery UI Widget uses jQuery, the Plupload Core is written in native JS. See the documentation for more info.

Updade Guide 

Upgrade to 9.0.2 

Changelog 

  • Added support for TYPO3 14
  • Removed support for TYPO3 12 and 13
  • Migrated the plugin to a custom content element type
  • Removed lots of deprecated code
  • Improved code quality / CGL

How to upgrade 

  • Use provided upgrade wizard in "Upgrade" BE module to migrate existing plugins to content elements
  • Clear all caches

Upgrade to 8.2.0 

Changelog 

  • Add support for PHP 8.4
  • Add CSP nonce for added JS code
  • Deprecation free (in TYPO3 v13)
  • Migrated docs to PHP rendering
  • Improved code quality / CGL

How to upgrade 

  • Clear all caches

Upgrade to 8.1.0 

Changelog 

  • Support for site sets

How to upgrade 

  • Clear all caches

Upgrade to 8.0.0 

Changelog 

  • Added support for TYPO3 13 LTS
  • Added PHP 8.3 support
  • Replaced AbstractPlugin PiBase controller
  • Minor improvements and clean up
  • Improved documentation

How to upgrade 

Upgrade to 7.0.0 

Changelog 

  • Added support for TYPO3 12 LTS
  • Added PHP 8.2 support
  • Removed support for TYPO3 11.x
  • Make use of new TCA types (folder, datetime)
  • File session name is now prefixed with the plugin config record UID
  • Code refactoring
  • Minor improvements and clean up

How to upgrade 

  • Clear all caches
  • You might need to update the session handling in your custom extension
    • Example: "tx_pluploadfe_123_files" instead of "tx_pluploadfe_files" (where 123 is the record of the related config record)
    • Take a look at EXT:mailfiles or EXT:pluploadfe_powermail on how to an integration could look like

Upgrade to 6.1.0 

Changelog 

  • Add PHP 8.1 support
  • Bugfixes and improved CGL

How to upgrade 

  • Clear all caches

Upgrade to 6.0.0 

This release has been sponsored by i-provide GmbH / BECKER media.

Changelog 

  • Removed TYPO3 10.x support
  • Error message localization
  • Changed and improved session handling
  • Add Fluid ViewHelper for rendering plugin in frontend
  • Code refactoring
  • Minor improvements and clean up
  • Fix and improve documentation

How to upgrade 

  • Update your custom templates
  • Clear all caches

Upgrade to 5.0.0 

Changelog 

  • Tested in PHP 8.0
  • Added TYPO3 11.x support
  • Removed TYPO3 9.x support
  • Minor improvements and clean up

How to upgrade 

  • Clear all caches

Upgrade to 4.2.0 

Changelog 

How to upgrade 

  • Use "Analyze Database Structure" in the install tool
  • Clear all caches

Upgrade to 4.1.0 

Changelog 

  • Tested in PHP 7.4
  • Renamed TS and TSconfig files to newer file extensions
  • Minor improvements, fixes and clean up

How to upgrade 

  • Adjust your TS and TSconfig file inclusion

Upgrade to 4.0.0 

Changelog 

  • Added TYPO3 10.2 support
  • Removed TYPO3 8.x support
  • Now using PSR-15 middleware instead of eID
  • Removed custom logging, throw exceptions instead
  • Minor improvements, fixes and clean up

How to upgrade 

  • Clear all caches

Upgrade to 3.0.0 

Changelog 

  • Added TYPO3 9.5 support
  • Removed PHP 5.x support
  • Removed TYPO3 7.x support
  • Update Plupload to v2.3.6

How to upgrade 

  • Use "Clear all caches including PHP opcode cache" and "Dump Autoload Information" in the install tool (if needed for your setup)
  • Adjust your templates (add new error handler)
  • Clear all caches

Upgrade to 2.1.0 

Changelog 

  • Some refactoring
  • Changed PHP namespace to FelixNagel
  • Tested in PHP 7.2

How to upgrade 

  • Use "Clear all caches including PHP opcode cache"
  • Clear all caches

Upgrade to 2.0.0 

Changelog 

  • Removed TYPO3 6.2 support
  • Refactor classes
  • Switch to PSR-2 CGL

How to upgrade 

You need to clear the cache.

Upgrade to 1.6.1 

Changelog 

  • Fix path for swf (Flash) and xap (Silverlight) fallback

How to upgrade 

You might need to update your custom template. Clear the FE cache.

Upgrade to 1.6.0 

Changelog 

  • TYPO3 8.7 LTS support
  • Update Plupload to v2.3.1
  • Add new BE icons
  • Add integration guide in docs

How to upgrade 

You need to clear the cache.

Upgrade to 1.5.2 

Changelog 

  • Fix bug in folder generation with user name (replaced invalid realName field with name)

How to upgrade 

You need to clear the cache.

Make sure to check the feuser_field in your configuration records.

Upgrade to 1.5.1 

Changelog 

  • Fix bug in new content element wizard TSconfig
  • Remove folder input wizard workaround for TYPO3 7.6.11+
  • Remove old changelog

How to upgrade 

You need to clear the cache.

Upgrade to 1.5.0 

Changelog 

  • TYPO3 8.x support
  • Update Plupload to v2.1.9
  • Rework TCA to match latest TYPO3 API
  • Rework folder structure to match TYPO3 defaults
  • Fix TCA tab configuration for TYPO3 6.2

How to upgrade 

You need to clear the cache and make sure your TS configuration is up to date!

Upgrade to 1.4.0 

Changelog 

  • New feature: Using fe_user properties as upload folder (thanks to Daniel Wagner)!
  • Improve config record TCA (now using tabs, improved localization)
  • New template marker for max upload size (###FILE_MAX_SIZE###)

How to upgrade 

You need to clear the cache and create the new DB field after upgrading. Make sure your template match latest changes.

Upgrade to 1.3.x 

Extension is now compatible with TYPO3 CMS 7.5 and 7.6.

Plupload plugin has been updated, make sure everything works as expected.

You need to clear the cache in backend after upgrading.

Note: Version 1.3.0 was replaced with 1.3.1 due to upload errors.

Upgrade to 1.2.0 

Extension is now compatible with TYPO3 CMS 7.x.

Plupload plugin has been updated, make sure everything works as expected.

You need to clear the cache in backend after upgrading.

Upgrade to 1.0.0 

Add the new static TypoScript configuration to your TS template. Version 1.0.0 comes with Plupload 2.1.2 so make sure to update your template file if needed.

You need to make sure jQuery is available on your website. It's no longer included by default.

Please note: The initial JavaScript is now added as footer JS to ensure frontend development best practice.