FileUploadResource
class FileUploadResource extends ResourceBase (View source)
File upload resource.
This is implemented as a field-level resource for the following reasons:
- Validation for uploaded files is tied to fields (allowed extensions, max size, etc..).
- The actual files do not need to be stored in another temporary location, to be later moved when they are referenced from a file field.
- Permission to upload a file can be determined by a users field level create access to the file field.
Traits
Wrapper methods for \Drupal\Core\StringTranslation\TranslationInterface.
Provides dependency injection friendly methods for serialization.
Provides a trait for the messenger service.
Constants
| DERIVATIVE_SEPARATOR |
A string which is used to separate base plugin IDs from the derivative ID. |
| REQUEST_HEADER_FILENAME_REGEX |
The regex used to extract the filename from the content disposition header. |
| BYTES_TO_READ |
The amount of bytes to read in each iteration when streaming file data. |
Properties
| protected string | $pluginId | The plugin_id. |
from PluginBase |
| protected array | $pluginDefinition | The plugin implementation definition. |
from PluginBase |
| protected array | $configuration | Configuration information passed into the plugin. |
from PluginBase |
| protected TranslationInterface | $stringTranslation | The string translation service. |
from StringTranslationTrait |
| protected array | $_serviceIds | An array of service IDs keyed by property name used for serialization. |
from DependencySerializationTrait |
| protected array | $_entityStorages | An array of entity type IDs keyed by the property name of their storages. |
from DependencySerializationTrait |
| protected MessengerInterface | $messenger | The messenger. |
from MessengerTrait |
| protected array | $serializerFormats | The available serialization formats. |
from ResourceBase |
| protected LoggerInterface | $logger | A logger instance. |
from ResourceBase |
| protected FileSystem | $fileSystem | The file system service. |
|
| protected EntityTypeManagerInterface | $entityTypeManager | The entity type manager. |
|
| protected EntityFieldManagerInterface | $entityFieldManager | The entity field manager. |
|
| protected AccountInterface | $currentUser | The currently authenticated user. |
|
| protected MimeTypeGuesserInterface | $mimeTypeGuesser | The MIME type guesser. |
|
| protected Token | $token | The token replacement instance. |
|
| protected LockBackendInterface | $lock | The lock service. |
|
| protected ImmutableConfig | $systemFileConfig | ||
| protected EventDispatcherInterface | $eventDispatcher | The event dispatcher to dispatch the filename sanitize event. |
Methods
Constructs a FileUploadResource instance.
Translates a string to the current language or to a given language.
Formats a string containing a count of items.
Returns the number of plurals supported by a given language.
Gets the string translation service.
Creates an instance of the plugin.
Implements ResourceInterface::permissions().
Returns a collection of routes with URL path information for the resource.
Returns the available HTTP request methods on this plugin.
Gets the base route for a particular method.
Gets the base route requirements for a particular method.
Creates a file from an endpoint.
Streams file upload data to temporary file and moves to file destination.
Validates and extracts the filename from the Content-Disposition header.
Validates and loads a field definition instance.
Prepares the filename to strip out any malicious extensions.
Determines the URI for a file field.
Retrieves the upload validators for a field definition.
Generates a lock ID based on the file URI.
Details
__construct(array $configuration, string $plugin_id, mixed $plugin_definition, array $serializer_formats, LoggerInterface $logger, FileSystemInterface $file_system, EntityTypeManagerInterface $entity_type_manager, EntityFieldManagerInterface $entity_field_manager, AccountInterface $current_user, MimeTypeGuesserInterface $mime_type_guesser, Token $token, LockBackendInterface $lock, Config $system_file_config, EventDispatcherInterface $event_dispatcher = NULL)
Constructs a FileUploadResource instance.
string
getPluginId()
Gets the plugin_id of the plugin instance.
string
getBaseId()
Gets the base_plugin_id of the plugin instance.
string|null
getDerivativeId()
Gets the derivative_id of the plugin instance.
array
getPluginDefinition()
Gets the definition of the plugin implementation.
bool
isConfigurable()
Determines if the plugin is configurable.
protected TranslatableMarkup
t(string $string, array $args = [], array $options = [])
Translates a string to the current language or to a given language.
See \Drupal\Core\StringTranslation\TranslatableMarkup::__construct() for important security information and usage guidelines.
In order for strings to be localized, make them available in one of the ways supported by the
protected
formatPlural($count, $singular, $plural, array $args = [], array $options = [])
Formats a string containing a count of items.
protected
getNumberOfPlurals($langcode = NULL)
Returns the number of plurals supported by a given language.
protected TranslationInterface
getStringTranslation()
Gets the string translation service.
$this
setStringTranslation(TranslationInterface $translation)
Sets the string translation service to use.
__sleep()
{@inheritdoc}
__wakeup()
{@inheritdoc}
setMessenger(MessengerInterface $messenger)
Sets the messenger.
MessengerInterface
messenger()
Gets the messenger.
static ContainerFactoryPluginInterface
create(ContainerInterface $container, array $configuration, string $plugin_id, mixed $plugin_definition)
Creates an instance of the plugin.
array
permissions()
Implements ResourceInterface::permissions().
Every plugin operation method gets its own user permission. Example: "restful delete entity:node" with the title "Access DELETE on Node resource".
RouteCollection
routes()
Returns a collection of routes with URL path information for the resource.
This method determines where a resource is reachable, what path replacements are used, the required HTTP method for the operation etc.
protected array
requestMethods()
Provides predefined HTTP request methods.
Plugins can override this method to provide additional custom request methods.
array
availableMethods()
Returns the available HTTP request methods on this plugin.
protected Route
getBaseRoute(string $canonical_path, string $method)
Gets the base route for a particular method.
protected array
getBaseRouteRequirements($method)
Gets the base route requirements for a particular method.
protected
validate(FileInterface $file, array $validators)
Validates the file.
ModifiedResourceResponse
post(Request $request, string $entity_type_id, string $bundle, string $field_name)
Creates a file from an endpoint.
protected string
streamUploadData()
Streams file upload data to temporary file and moves to file destination.
protected string
validateAndParseContentDispositionHeader(Request $request)
Validates and extracts the filename from the Content-Disposition header.
protected FieldDefinitionInterface
validateAndLoadFieldDefinition(string $entity_type_id, string $bundle, string $field_name)
Validates and loads a field definition instance.
protected string
prepareFilename(string $filename, array $validators)
Prepares the filename to strip out any malicious extensions.
protected string
getUploadLocation(array $settings)
Determines the URI for a file field.
protected array
getUploadValidators(FieldDefinitionInterface $field_definition)
Retrieves the upload validators for a field definition.
This is copied from \Drupal\file\Plugin\Field\FieldType\FileItem as there is no entity instance available here that a FileItem would exist for.
static protected string
generateLockIdFromFileUri($file_uri)
Generates a lock ID based on the file URI.