core/modules/file/file.services.yml | 2 +- core/modules/file/src/FileFieldUploader.php | 16 +++++++++++++--- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/core/modules/file/file.services.yml b/core/modules/file/file.services.yml index 3db675065c..472c196005 100644 --- a/core/modules/file/file.services.yml +++ b/core/modules/file/file.services.yml @@ -7,4 +7,4 @@ services: file.uploader.field: class: Drupal\file\FileFieldUploader - arguments: ['@logger.channel.file', '@file_system', '@file.mime_type.guesser', '@token', '@lock', '@config.factory'] + arguments: ['@entity_type.manager', '@logger.channel.file', '@file_system', '@file.mime_type.guesser', '@token', '@lock', '@config.factory'] diff --git a/core/modules/file/src/FileFieldUploader.php b/core/modules/file/src/FileFieldUploader.php index a0ae183d42..325e932d0d 100644 --- a/core/modules/file/src/FileFieldUploader.php +++ b/core/modules/file/src/FileFieldUploader.php @@ -5,6 +5,7 @@ use Drupal\Component\Utility\Bytes; use Drupal\Component\Utility\Crypt; use Drupal\Core\Entity\EntityInterface; +use Drupal\Core\Entity\EntityTypeManagerInterface; use Drupal\Core\Entity\Plugin\DataType\EntityAdapter; use Drupal\Core\Field\FieldDefinitionInterface; use Drupal\Core\Validation\DrupalTranslator; @@ -15,7 +16,6 @@ use Drupal\Core\Session\AccountInterface; use Drupal\Core\Utility\Token; use Drupal\Component\Render\PlainTextOutput; -use Drupal\file\Entity\File; use Drupal\file\Plugin\Field\FieldType\FileFieldItemList; use Psr\Log\LoggerInterface; use Symfony\Component\HttpFoundation\File\MimeType\MimeTypeGuesserInterface; @@ -53,6 +53,13 @@ class FileFieldUploader { */ const BYTES_TO_READ = 8192; + /** + * The entity type manager. + * + * @var \Drupal\Core\Entity\EntityTypeManagerInterface + */ + protected $entityTypeManager; + /** * A logger instance. * @@ -98,6 +105,8 @@ class FileFieldUploader { /** * Constructs a FileUploadResource instance. * + * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager + * The entity type manager. * @param \Psr\Log\LoggerInterface $logger * A logger instance. * @param \Drupal\Core\File\FileSystemInterface $file_system @@ -111,7 +120,8 @@ class FileFieldUploader { * @param \Drupal\Core\Config\ConfigFactoryInterface $config_factory * The config factory. */ - public function __construct(LoggerInterface $logger, FileSystemInterface $file_system, MimeTypeGuesserInterface $mime_type_guesser, Token $token, LockBackendInterface $lock, ConfigFactoryInterface $config_factory) { + public function __construct(EntityTypeManagerInterface $entity_type_manager, LoggerInterface $logger, FileSystemInterface $file_system, MimeTypeGuesserInterface $mime_type_guesser, Token $token, LockBackendInterface $lock, ConfigFactoryInterface $config_factory) { + $this->entityTypeManager = $entity_type_manager; $this->logger = $logger; $this->fileSystem = $file_system; $this->mimeTypeGuesser = $mime_type_guesser; @@ -170,7 +180,7 @@ public function handleFileUploadForField(FieldDefinitionInterface $field_definit } // Begin building file entity. - $file = File::create([]); + $file = $this->entityTypeManager->getStorage('file')->create([]); $file->setOwnerId($owner->id()); $file->setFilename($prepared_filename); $file->setMimeType($this->mimeTypeGuesser->guess($prepared_filename));