drupal 9 custom file stream wrapper code example
Example: drupal 9 custom local stream wrapper
This is a modified snippet from a live real estate project to define a custom stream wrapper.
Add the stream wrapper as a service in your services YML file:
stream_wrapper.pics:
class: Drupal\mymod\PicsStreamWrapper
tags:
- { name: stream, scheme: pics }
Create the stream wrapper class extending LocalStream:
<?php
namespace Drupal\mymod;
use Drupal\Core\StreamWrapper\LocalStream;
class PicsStreamWrapper extends LocalStream {
public function getDirectoryPath() {
return 'sites/default/files/pics';
}
public function getExternalUrl() {
global $base_url;
$path = str_replace('\\', '/', $this->getTarget());
return $base_url . '/' . self::getDirectoryPath() . '/' . $path;
}
public function getName() {
return 'Pics Stream';
}
public function getDescription() {
return 'Pics stream for listing property pics.';
}
}