PHP 8.3.4 Released!

ZipArchive::getStream

(PHP 5 >= 5.2.0, PHP 7, PHP 8, PECL zip >= 1.1.0)

ZipArchive::getStreamİsmi belirtilen girdi için dosya tanıtıcısı (salt okunur) döndürür

Açıklama

public ZipArchive::getStream(string $isim): resource|false

İsmi belirtilen girdi için dosya tanıtıcısı döndürür. Şimdilik sadece okuma işlemleri desteklenmektedir.

Bağımsız Değişkenler

isim

Kullanılacak girdinin ismi.

Dönen Değerler

Başarısızlık durumunda false aksi takdirde girdinin dosya tanıtıcısı döner.

Örnekler

Örnek 1 - Girdi içeriğini fread() ile alıp saklamak

<?php
$contents
= '';
$z = new ZipArchive();
if (
$z->open('test.zip')) {
$fp = $z->getStream('test');
if(!
$fp) exit("olmadı\n");

while (!
feof($fp)) {
$contents .= fread($fp, 2);
}

fclose($fp);
file_put_contents('t',$contents);
echo
"bitti.\n";
}
?>

Örnek 2 - fopen() ve zip akım sarmalayıcı kullanmak dışında yukarıdaki ile aynı

<?php
$contents
= '';
$fp = fopen('zip://' . dirname(__FILE__) . '/test.zip#test', 'r');
if (!
$fp) {
exit(
"açılamadı\n");
}
while (!
feof($fp)) {
$contents .= fread($fp, 2);
}
echo
"$contents\n";
fclose($fp);
echo
"bitti.\n";
?>

Örnek 3 - Akım sarmalayıcı ve resim, XML işleviyle de kullanılabilir

<?php
$im
= imagecreatefromgif('zip://' . dirname(__FILE__) . '/test_im.zip#pear_item.gif');
imagepng($im, 'a.png');
?>

Ayrıca Bakınız

add a note

User Contributed Notes 2 notes

up
2
Sbastien
1 year ago
Here a way to handle specific files from a zip archive without full extract :

<?php

$zip_file
= '/path/to/file.zip'; // I wan to get stream a CSV files

$zip = new ZipArchive();
$zip->open($zip_file);
for (
$i = 0; $i < $zip->numFiles; $i++) { // Check file by file
$name = $zip->getNameIndex($i); // Retrieve entry name
$extension = pathinfo($name, PATHINFO_EXTENSION);
if (
$extension === 'csv') { // I want to handle csv files
$stream = $zip->getStream($name); // No stream index access before PHP 8.2
// Starting PHP 8.2 $zip->getStreamIndex() or $zip->getStreamName()
// Do stuff with $stream
// ...
}
}
up
0
oleg at andreyev dot lv
2 years ago
Keep in mind that this stream is not rewindable/seekable.
To Top