private function handleUpload(FormInterface $form, DirectoryInterface $directory)
{
if (!$form->isValid()) {
$this->flashes()->error(Trans::__('general.phrase.file-upload-failed'));
return;
}
/** @var UploadedFile[] $files */
$files = $form->getData()['FileUpload'];
$permissions = $this->app['filepermissions'];
foreach ($files as $fileToProcess) {
$fileToProcess = ['name' => $fileToProcess->getClientOriginalName(), 'tmp_name' => $fileToProcess->getPathname()];
$originalFilename = $fileToProcess['name'];
$filename = preg_replace('/[^a-zA-Z0-9_\\.]/', '_', basename($originalFilename));
try {
$isAllowed = $permissions->allowedUpload($filename);
} catch (IOException $e) {
$this->flashes()->error($e->getMessage());
continue;
}
if ($isAllowed) {
$this->processUpload($directory, $filename, $fileToProcess);
} else {
$extensionList = [];
foreach ($permissions->getAllowedUploadExtensions() as $extension) {
$extensionList[] = '<code>.' . htmlspecialchars($extension, ENT_QUOTES) . '</code>';
}
$extensionList = implode(' ', $extensionList);
$this->flashes()->error(Trans::__("File '%file%' could not be uploaded (wrong/disallowed file type). Make sure the file extension is one of the following:", ['%file%' => $filename]) . $extensionList);
}
}
}