 src/Field/FileDownloadUrl.php | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/src/Field/FileDownloadUrl.php b/src/Field/FileDownloadUrl.php
index a60b5b3..7abad2b 100644
--- a/src/Field/FileDownloadUrl.php
+++ b/src/Field/FileDownloadUrl.php
@@ -4,6 +4,7 @@ namespace Drupal\jsonapi\Field;
 
 use Drupal\Core\Field\FieldItemList;
 use Drupal\Core\Session\AccountInterface;
+use Drupal\Core\StreamWrapper\StreamWrapperInterface;
 
 /**
  * @internal
@@ -24,11 +25,14 @@ class FileDownloadUrl extends FieldItemList {
    *   The transformed relative URL.
    */
   protected function fileCreateRootRelativeUrl($uri) {
-    // For testing purposes, return the $uri when the scheme is 'vfs'.
-    if (\Drupal::service('file_system')->uriScheme($uri) === 'vfs') {
-      return $uri;
+    $wrapper = \Drupal::service('stream_wrapper_manager')->getViaUri($uri);
+    if ($wrapper && ($wrapper->getType() & StreamWrapperInterface::VISIBLE)) {
+      return file_url_transform_relative(file_create_url($uri));
     }
-    return file_url_transform_relative(file_create_url($uri));
+
+    // For testing purposes, return the $uri when the scheme is not a wrapper or
+    // not visible.
+    return $uri;
   }
 
   /**
