data://

data://Datos (RFC 2397)

Descripción

La envoltura de flujo data: (» RFC 2397).

Uso

  • data://text/plain;base64,

Opciones

Resumen de la envoltura
Atributo Soportado
Restringido por allow_url_fopen
Restringido por allow_url_include
Permite la lectura
Permite la escritura No
Permite la adición No
Permite la lectura y escritura simultáneamente No
Soporte de la función stat() No
Soporte de la función unlink() No
Soporte de la función rename() No
Soporte de la función mkdir() No
Soporte de la función rmdir() No

Ejemplos

Ejemplo #1 Mostrar un contenido data://

<?php
// Muestra "I love PHP"
echo file_get_contents('data://text/plain;base64,SSBsb3ZlIFBIUAo=');
?>

Ejemplo #2 Obtención del tipo de medio

<?php
$fp
= fopen('data://text/plain;base64,', 'r');
$meta = stream_get_meta_data($fp);

// Muestra "text/plain"
echo $meta['mediatype'];
?>
add a note

User Contributed Notes 3 notes

up
26
from dot php dot net at brainbox dot cz
14 years ago
When passing plain string without base64 encoding, do not forget to pass the string through URLENCODE(), because PHP automatically urldecodes all entities inside passed string (and therefore all + get lost, all % entities will be converted to the corresponding characters).

In this case, PHP is strictly compilant with the RFC 2397. Section 3 states that passes data should be either in base64 encoding or urlencoded.

VALID USAGE:
<?php
$fp
= fopen('data:text/plain,'.urlencode($data), 'rb'); // urlencoded data
$fp = fopen('data:text/plain;base64,'.base64_encode($data), 'rb'); // base64 encoded data
?>

Demonstration of invalid usage:
<?php
$data
= 'Günther says: 1+1 is 2, 10%40 is 20.';

$fp = fopen('data:text/plain,'.$data, 'rb'); // INVALID, never do this
echo stream_get_contents($fp);
// Günther says: 1 1 is 2, 10@ is 20. // ERROR

$fp = fopen('data:text/plain,'.urlencode($data), 'rb'); // urlencoded data
echo stream_get_contents($fp);
// Günther says: 1+1 is 2, 10%40 is 20. // OK

// Valid option 1: base64 encoded data
$fp = fopen('data:text/plain;base64,'.base64_encode($data), 'rb'); // base64 encoded data
echo stream_get_contents($fp);
// Günther says: 1+1 is 2, 10%40 is 20. // OK
?>
up
13
admin deskbitz net
15 years ago
If you want to create a gd-image directly out of a sql-database-field you might want to use:

<?php
$jpegimage
= imagecreatefromjpeg("data://image/jpeg;base64," . base64_encode($sql_result_array['imagedata']));
?>

this goes also for gif, png, etc using the correct "imagecreatefrom$$$"-function and mime-type.
up
4
sandaimespaceman at gmail dot com
16 years ago
Now PHP supports data: protocol w/out "//" like data:text/plain, not data://text/plain,

I tried it.
To Top