symfonyコントローラでは、ファイル(UploadedFileオブジェクト)を変数として持っています。PHP ZipArchiveを変数としてファイルに使用
この「変数」をphp ZipArchiveで開き、それを抽出したいと思います。 しかし、open()メソッドは文字列を予期しています。これはファイルシステム内のファイル名です。 ZipArchiveでファイルを処理する方法はありますか?FSにファイル変数を書き込まないでください。
symfonyコントローラでは、ファイル(UploadedFileオブジェクト)を変数として持っています。PHP ZipArchiveを変数としてファイルに使用
この「変数」をphp ZipArchiveで開き、それを抽出したいと思います。 しかし、open()メソッドは文字列を予期しています。これはファイルシステム内のファイル名です。 ZipArchiveでファイルを処理する方法はありますか?FSにファイル変数を書き込まないでください。
tmpfile()を使用して一時ファイルを作成し、それに書き込み、zipで使用することができます。例:
<?php
$zip = new ZipArchive();
$zip->open(__DIR__ . '/zipfile.zip', ZipArchive::CREATE);
$fp = tmpfile();
fwrite($fp, 'Test');
$filename = stream_get_meta_data($fp)['uri'];
$zip->addFile($filename, 'filename.txt');
$zip->close();
fclose($fp);
リトルが改善:
$zipContent; // in this variable could be ZIP, DOCX, XLSX etc.
$fp = tmpfile();
fwrite($fp, $zipContent);
$stream = stream_get_meta_data($fp);
$filename = $stream['uri'];
$zip = new ZipArchive();
$zip->open($filename);
// profit!
$zip->close();
fclose($fp);
ちょうど「zipfile.zip」を作成し、我々はすでに変数を持っているので、内部のファイルを追加するには意味をなさない。
私はZipArchiveクラスでメモリ内のzipファイルを処理する方法はないと思います。あなたはいつもtmpディレクトリにファイルを保存することができます.. - > sys_get_temp_dir() – Jimmmy
ありがとう、私はそれを見てみましょう – Qonq