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: DrupalmymodPicsStreamWrapper
tags:
- { name: stream, scheme: pics }
Create the stream wrapper class extending LocalStream:
<?php
namespace Drupalmymod;
use DrupalCoreStreamWrapperLocalStream;
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.';
}
}