--- /dev/null
+<?php
+
+namespace Drupal\file\Plugin\Field\FieldType;
+
+use Drupal\Core\Field\FieldStorageDefinitionInterface;
+use Drupal\Core\Field\Plugin\Field\FieldType\UriItem;
+use Drupal\Core\TypedData\DataDefinition;
+use Drupal\file\ComputedFileUrl;
+
+/**
+ * File-specific plugin implementation of a URI item to provide a full URL.
+ *
+ * @FieldType(
+ * id = "file_uri",
+ * label = @Translation("File URI"),
+ * description = @Translation("An entity field containing a file URI, and a computed root-relative file URL."),
+ * no_ui = TRUE,
+ * default_formatter = "file_uri",
+ * default_widget = "uri",
+ * )
+ */
+class FileUriItem extends UriItem {
+
+ /**
+ * {@inheritdoc}
+ */
+ public static function propertyDefinitions(FieldStorageDefinitionInterface $field_definition) {
+ $properties = parent::propertyDefinitions($field_definition);
+
+ $properties['url'] = DataDefinition::create('string')
+ ->setLabel(t('Root-relative file URL'))
+ ->setComputed(TRUE)
+ ->setInternal(FALSE)
+ ->setClass(ComputedFileUrl::class);
+
+ return $properties;
+ }
+
+}