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