Компонент Serializer использует нормализаторами/денормализаторами чтобы преобразовывать объекты в промежуточные массивы, используемые для сериализации/ десериализации содержимого. В Symfony 3.1, добавлен новый DataUriNormalizer
, чтобы преобразовывать объекты в data:URI
строки.
Первое что нужно сделать, для нормализации объекта в data:URI
строку, передать экземпляр объекта в normalize()
метод:
use Symfony\Component\Serializer\Normalizer\DataUriNormalizer; $normalizer = new DataUriNormalizer(); $avatar = $normalizer->normalize(new \SplFileObject('avatar.gif')); // $avatar = 'data:image/gif;base64,R0lGODdhAQABAIAAAP///////ywAAAAAAQABAAACAkQBADs=';
Содержимое нормированных файлов теперь можно совместимо и безопасно с другими технологиями, такими как JavaScript, посредствам FileReader.readAsDataURL() метода
.
Денормализация data:URI
строки в экземпляр объекта также очень проста:
use Symfony\Component\Serializer\Normalizer\DataUriNormalizer; $normalizer = new DataUriNormalizer(); $avatar = $normalizer->denormalize('data:image/gif;base64,R0lGODdhAQABAIAAAP///////ywAAAAAAQABAAACAkQBADs=', 'SplFileObject'); // $avatar is a SplFileObject with the GIF image contents
Нормализатор/денормализатор поддерживает любой файловый объект, который является экземпляром \SplFileInfo
, в том числе \SplFileObject
и Symfony\Component\HttpFoundation\File\File
объектов.
При нормализации объектов, MimeTypeGuesser обеспечиваемый компонентом HttpFoundation используется для определения MIME типа объекта. Если ваше приложение использует пользовательский Guesser, передаете его в качестве первого аргумента в класс DataUriNormalizer.
Источник: http://symfony.com/blog/new-in-symfony-3-1-data-uri-normalizer