Php :/ / filtresi kullanıldığında filtre akışı filtre parametre ekleme

1 Cevap php

Ben standart MIME uyumlu base64 dizeye dönüştürmek istediğiniz bir ikili var. Ben akımının filtre php://filter yöntemini kullanabilirsiniz diye düşündüm, ama ben "hat uzunluğu" parametresini ayarlamak için nasıl kapattı alıyorum. Orada benzer sonuçlar elde edeceğini diğer yöntemler vardır, ama eğer ben anlamaya çalışıyorum:

  1. Hatta mümkünse eğer / URI tarzı yöntemi kullanılarak akış filtreleri için parametrelerini ayarlamak için izin verdi.

  2. Mümkün olup olmadığını, nasıl yapılır.

İşte ben bugüne kadar var bulmacanın parçalarıdır:

Açıkçası, ben fantezi olmaya çalışıyorum durdurabilir ve sadece ile gitmek:

$binary = "path/to/binary.file";
$mime = file_get_contents($binary);
$mime = base64_encode($mime);
$mime = chunk_split($mime);

Ya da, ben line-length parametre olmadan php://filter yöntemini kullanın ve sonra onu bölebilirsiniz:

$binary = "path/to/binary.file";
$mime = file_get_contents("php://filter/read=convert.base64-encode/resource=$binary");
$mime = chunk_split($mime);

Ya da, ben fopen stream_filter_append ile kombine ve (Conversion Filters kılavuzunda belirtildiği gibi) hiç URL-stili kullanamazsınız kullanabilirsiniz:

$binary = "path/to/binary.file";
$param = array('line-length' => 76, 'line-break-chars' => "\r\n");
$fp = fopen($binary, 'r');
stream_filter_append($fp, 'convert.base64-encode',null, $param);
$mime = fread($fp, filesize($binary));
fclose($fp);

Yani yukarıdaki tüm aynı sonucu verir, ancak bunların hiçbiri akışı için aynı URL line-length parametre eklemek için, hangi için umuyordum nelerdir. Bir şey belki gibi:

$mime = file_get_contents("php://filter/read=convert.base64-encode:line-length=76/resource=$binary");

Ben sorunu parametre stream_filter_append kullanılan bir dizi olarak geçirilecek olmasıdır düşünün.

Ne istiyorum yapılabilir Yani herkes biliyor?

1 Cevap

  1. Hatta mümkünse eğer / URI tarzı yöntemi kullanılarak akış filtreleri için parametrelerini ayarlamak için izin verdi.

Ne yazık ki, şu anda, bu 1 filtre adının başka bir şey (sizin durumda convert.base64-encode) bu php://filter URL'ler için sağlanması mümkün değildir.

I fread(...) için stream_get_contents yerine, sizin stream_filter_append yaklaşımı ile gitmek istiyorum.

  1. current source açıkça için filterparams parametresi için NULL kullanan gör php_stream_filter_create. Bu 2 Eğer önerilen tarzı argümanların okunmasını uygulamak için çok fazla iş olmaz.
  2. Ben bir C programcısı değilim.