Fix filename handling

This commit is contained in:
Dirk 2020-08-18 14:27:44 +02:00
parent e13cc33e41
commit e490feae93

View file

@ -87,9 +87,9 @@ class DestinationDataImportService {
*/ */
protected $environment; protected $environment;
/** /**
* @var bool * @var
*/ */
protected $tmpCurrentEvent = FALSE; protected $tmpCurrentEvent;
/** /**
* @var * @var
*/ */
@ -545,21 +545,34 @@ class DestinationDataImportService {
$this->storage = $this->resourceFactory->getDefaultStorage(); $this->storage = $this->resourceFactory->getDefaultStorage();
$orgFileUrl = urldecode($media_object['url']);
$orgFileNameSanitized = $this->storage->sanitizeFileName(
strtolower(
basename(
urldecode($media_object['url'])
)
)
);
$this->logger->info('File attached:' . $orgFileUrl);
$this->logger->info('File attached sanitized:' . $orgFileNameSanitized);
//die();
if ($this->storage == null) { if ($this->storage == null) {
$this->logger->error('No default storage defined. Cancel import.'); $this->logger->error('No default storage defined. Cancel import.');
die(); die();
} }
// Check if file already exists // Check if file already exists
if (file_exists($this->environment->getPublicPath() . '/fileadmin/' . $this->filesFolder . strtolower(basename($media_object['url'])))) { if (file_exists($this->environment->getPublicPath() . '/fileadmin/' . $this->filesFolder . $orgFileNameSanitized)) {
$this->logger->info('File already exists'); $this->logger->info('File already exists');
} else { } else {
$this->logger->info("File don't exist"); $this->logger->info("File don't exist " . $orgFileNameSanitized);
// Load the file // Load the file
if ($file = $this->loadFile($media_object['url'])) { if ($file = $this->loadFile($orgFileUrl)) {
// Move file to defined folder // Move file to defined folder
$this->logger->info('Adding file ' . $file); $this->logger->info('Adding file ' . $file);
$this->storage->addFile($this->environment->getPublicPath() . "/uploads/tx_events/" . $file, $this->storage->getFolder($this->filesFolder), basename($media_object['url'])); $this->storage->addFile($this->environment->getPublicPath() . "/uploads/tx_events/" . $file, $this->storage->getFolder($this->filesFolder));
} else { } else {
$error = true; $error = true;
} }
@ -571,7 +584,7 @@ class DestinationDataImportService {
// TODO: How to delete file references? // TODO: How to delete file references?
} else { } else {
$this->logger->info('No relation found'); $this->logger->info('No relation found');
$file = $this->storage->getFile($this->filesFolder . basename($media_object['url'])); $file = $this->storage->getFile($this->filesFolder . $orgFileNameSanitized);
$this->metaDataRepository->update($file->getUid(), array('title' => $media_object['value'], 'description' => $media_object['description'], 'alternative' => 'DD Import')); $this->metaDataRepository->update($file->getUid(), array('title' => $media_object['value'], 'description' => $media_object['description'], 'alternative' => 'DD Import'));
$this->createFileRelations($file->getUid(), 'tx_events_domain_model_event', $this->tmpCurrentEvent->getUid(), 'images', $this->storagePid); $this->createFileRelations($file->getUid(), 'tx_events_domain_model_event', $this->tmpCurrentEvent->getUid(), 'images', $this->storagePid);
} }