Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Galera eu estou tentando zipar pasta e sub-pastas com vários arquivos, mais ele zipa certo, mais o problema é que ele pega direto da raiz alguém para me ajudar, eu tenho um post anterior sobre zip, mais é só pra zipar arquivos então é mais tranquilo, agora estou usando outra função do PHP.
Segue o código espero que vcs me ajudem e me mostrem meu erro.
Valeu.
$url = 'C:/APLICACOES/arquivos/pix_teste/baixar/users/0/7/ads/Ad1';
$zipfile = $url.'.zip';
$zip = new ZipArchive();
if ($zip->open($zipfile, ZipArchive::CREATE)!== TRUE) {
exit("cannot open <$zipfile>\n");
}
$directory = new \RecursiveDirectoryIterator($url);
$iterator = new \RecursiveIteratorIterator($directory);
$files = array();
foreach ($iterator as $info) {
if($info !== "." && $info !== ".."){
$zip->addFromString($info,$info);
}
}
$zip->close();Tenta com uma função chamada explode
Não entendi absolutamente nada do seu problema. Se o está com problemas com os diretórios virtuais ("." e ".."). Use os métodos como isDir, isFile, etc..., da própria RecursiveDirectoryIterator.
Quais outros problemas seriam?
Gabriel Heming O problema que estou tendo é que eu quero gerar o zip assim ' Ad1.zip com suas pastas'.
Mais ele zipa 'Ad1.zip e aqui dentro mostra desde a raiz C: e assim por diante'.
Usei str_replace e me ajudou mais estou usando o frame Yii2 e ela não deixa funcionar, sempre registra zipa a raiz.
No primeiro parâmetro é o nome do arquivo. Como você usa RecursiveDirectoryIterator, não precisa fazer replace. Você terá um objeto SplFileInfo como arquivo, basta usar o método SplFileInfo::getFilename().
Outro problema, é que você está passando os mesmos parâmetros:
$zip->addFromString($mostrar,$mostrar);
O correto seria:
$zip->addFromString($nome_do_arquivo , $conteudo_do_arquivo);
Consegui resolver o meu problema com o diretório, mais não consigo tirar os "." e ".." , no meu laço ele não se comporta, alguém para dar uma ideia?
if ($zip->open($zipfile, ZipArchive::CREATE)!== TRUE) {