This simple library allows you to easily convert a wide variety of data into a temporary file represented by a lightweight immutable value object.
composer require 1tomany/data-uri
The three methods exposed by this library are:
OneToMany\DataUri\DataDecoder::decode()OneToMany\DataUri\DataDecoder::decodeBase64()OneToMany\DataUri\DataDecoder::decodeText()
Each method returns a OneToMany\DataUri\Record\TemporaryFile value object which implements the interface OneToMany\DataUri\Contract\Record\TemporaryFileInterface. By default, the TemporaryFile object will delete any filesystem resources it knows about when it is explicitly destructed or garbage collected.
The DataDecoder::decode() method is the most versatile as it allows for a wide variety of inputs:
- A data URI defined in RFC2397
- A file from an accessible filesystem
- A public HTTP or HTTPS URL
The DataDecoder::decode() method has the following arguments:
mixed $dataThe data, file, or URL to decode.string|FileType|null $type = nullThe MIME type of the temporary file. If empty, the type will be determined using either the file's extension or themime_content_type()function. You may want to explicitly provide this argument when the file can be multiple types. For example,mime_content_type()may returntext/plainfor Markdown files, which is correct, however, you may wish to use the more specific MIME typetext/markdown.string|null $name = nullThe name for the temporary file. This is useful for handling file uploads where the original filename is preferred over the random one PHP assigns. A randomly generated name will be used if this is empty and a name cannot be resolved.
Under the hood, DataDecoder::decode() uses the fopen() and stream_get_contents() functions, which means the data passed to it can be any stream that PHP supports.
This method is to be used when the data is known to be base64 encoded but NOT encoded as a data URI.
The DataDecoder::decodeBase64() method has the following parameters:
string $dataThe base64 encoded string.string|FileType $typeThe MIME type of the data.string|null $name = nullSeeDataDecoder::decode().
This method is to be used when the data is known to be plaintext.
The DataDecoder::decodeText() method has the following arguments:
string $textThe plaintext string.string|FileType $type = FileType::TxtThe MIME type of the text.string|null $name = nullSeeDataDecoder::decode().
Run and inspect the decode.php file for examples on how to use the DataDecoder::decode() method.
php examples/decode.php [--all]The MIT License