PHP: como descompactar um arquivo ZIP
Descompacte um arquivo ZIP
Hoje, quando você pesquisa como descompactar um arquivo ZIP em PHP no Google, encontra em primeiro lugar as funções de extração da biblioteca PECL. Mas não é possível descompactar esse formato padrão sem ter que passar por uma biblioteca de terceiros? Se ! É esta solução que eu recomendo a você. E isso por vários motivos:
- Nenhuma biblioteca adicional.
- Funcionalidade já integrada.
- Funcionalidade comum em todas as plataformas com PHP 4 >= 4.1.0 ou PHP 5 >= 5.1.0
- Fácil de instalar graças ao apt-get para usuários Linux ou graças aos vários tutoriais para outras plataformas.
- Limite a redundância de código porque deve ser dito, a API PECL pode ser mais fácil de entender o código que diremos "baixo nível" é o mesmo, seja por PHP nativo ou por PECL ZipArchive
Script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
função descompactar($path_zip, $tmp_folder = “/tmp/”)
{
$all_files = ordem();
$zip = zip_open($path_zip);
if ($zip) {
$fluxo = zip_read($zip);
enquanto ($fluxo) {
var_dump($zip_name);
$zip_name = zip_entry_name($stream);
$path_file_unzip = $tmp_folder.$zip_name;
$dir_folder = substr($path_file_unzip, 0, strrpos($path_file_unzip, "/"));
mkdir($dir_pasta, 0777, verdadeiro);
$fp = fopen($path_file_unzip, "c");
array_push($all_files, $path_file_unzip);
if (zip_entry_open($zip, $stream, "r")) {
$buf = zip_entry_read($stream, zip_entry_filesize($stream));
fwrite($fp, “$buff”);
zip_entry_close($fluxo);
fclose ($ fp);
}
$fluxo = zip_read($zip);
}
zip_close($zip);
}
retorno $all_files;
}
|