joomla/filesystem

Joomla Filesystem Package

Package info

github.com/joomla-framework/filesystem

Homepage

Type:joomla-package

pkg:composer/joomla/filesystem

Statistics

Installs: 403 860

Dependents: 13

Suggesters: 1

Stars: 11

Open Issues: 7

4.1.0 2025-08-27 18:49 UTC

Requires

  • php: ^8.3.0

Suggests

None

Provides

None

Conflicts

None

Replaces

None

GPL-2.0-or-later cfcda2935605f14f396ccda7535f4417e27af868

frameworkfilesystemjoomla


README

👁 Latest Stable Version
👁 Total Downloads
👁 Latest Unstable Version
👁 License

File upload example

use Joomla\Filesystem\File;

$file = $this->input->files->get('file');

$config = array(
 'extensions' => 'jpg,jpeg,gif,png,pdf,doc,docx',
 'max_size' => 30000000, // 30 MB
 'folder' => 'documents'
);

// Check there is some file to upload
if (empty($file['name']))
{
 return;
}

// Check max size
if ($file['size'] > $config['max_size'])
{
 throw new \RuntimeException('Uploaded file size (' . round($file['size'] / 1000) . ' kB) is greater than allowed size (' . round($config['max_size'] / 1000) . ' kB).');
}

$config['extensions'] = explode(',', $config['extensions']);

// Get File extension
$ext = strtolower(substr($file['name'], (strrpos($file['name'], '.') + 1)));

// Sanitize allowed extensions
foreach ($config['extensions'] as &$extension)
{
 $extension = str_replace('.', '', trim(strtolower($extension)));
}

// Check allowed extensions
if (!in_array($ext, $config['extensions']))
{
 throw new \RuntimeException('Uploaded file extension (' . $ext . ') is not within allowed extensions (' . implode(',', $config['extensions']) . ')');
}

$path = JPATH_ROOT . '/' . $config['folder'] . '/' . File::makeSafe($file['name']);

File::upload($file['tmp_name'], $path);

Changes From 1.x

Patcher

In 1.x, the second parameter of the add and addFile methods was optional. In 2.0, this parameter is required. This parameter requires the root path of the source which you are patching.

Installation via Composer

Add "joomla/filesystem": "~3.0" to the require block in your composer.json and then run composer install.

{
	"require": {
		"joomla/filesystem": "~3.0"
	}
}

Alternatively, you can simply run the following from the command line:

composer require joomla/filesystem "~3.0"

If you want to include the test sources, use

composer require --prefer-source joomla/filesystem "~3.0"