Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa tarde pessoal,
Estou com um problema que não estou conseguindo resolver, ja fiz varias buscas no google e ainda nao consegui implementar uma solução.
Preciso fazer o upload de um arquivo Zip e descompacta-lo no servidor, mas estou tendo problemas na hora de descompactar arquivos com acentuação, sem acentuação funciona certinho.
Segue codigo
<meta charset="utf-8">
<html>
<head>
<title>Envia arquivo e descompacta online</title>
</head>
<body>
<form action="form.php" method="post" enctype="multipart/form-data">
<input type="file" name="Arquivo" id="Arquivo" multiple><br>
<input type="submit" value="Enviar">
<input type="reset" value="Apagar">
</form>
</body>
</html>
<html>
<head>
<title>Envia arquivo e descompacta online</title>
</head>
<body>
<?php
define( 'CHARSET', 'UTF-8' );
ini_set( 'default_charset', CHARSET );
ini_set( 'mbstring.http_output', CHARSET );
ini_set( 'mbstring.internal_encoding', CHARSET );
header( 'Content-Type: text/html; charset=' . CHARSET );
$nome_temporario=$_FILES["Arquivo"]["tmp_name"]; // Variável $nome_temporario recebe o arquivo vindo do formulário
$nome_real=$_FILES["Arquivo"]["name"]; // Variável $nome_real recebe o arquivo vindo do formulário
copy($nome_temporario,"$nome_real"); // Copiando a variável $nome_temporario para a variável $nome_real
echo "$nome_real"; // Mostrando o nome do arquivo
echo "<br>"; // Pulando uma linha
$zip = new ZipArchive; // A variável $zip recebe da biblioteca do php.ini o comando ZipArquive
if ($zip->open($nome_real) === TRUE) { // Verificando se o arquivo recebido na variável $nome_real existe e abrindo o arquivo
for($i = 0; $i < $zip->numFiles; $i++) {
$zip->extractTo('arquivos/', array($zip->getNameIndex($i)));
}
$zip->close(); // Fechando o comando ZipArquive
echo 'Arquivo descompactado'; // Mostrando a mensagem de arquivo descompactado
} else {
echo 'Falha ao descompactar arquivo'; // Caso haja alguma falha ao descompactar irá ser mostrado a mensagem de erro!
}
?>
</body>
</html>
Alguém sabe como resolver?http://forum.imasters.com.br/topic/499531-extrair-arquivo-zip-problema-de-acentuao/
Cara ja olhei esse tópico não achei a solução, sendo o ultimo post do autor do topico informando que nao resolveu.
Fiz os testes com todas as funções citadas e nao adiantou ou usei da forma errada.
1 - Se você não precisa do arquivo Zip gravado no servidor, não faça I/O desnecessário. Utilize o próprio arquivo temporário para abrir o Zip.
$zip->open( $_FILES["Arquivo"]["tmp_name"] );
2 - Se você precisa do arquivo gravado no servidor, não utilize o nome que vem no arquivo. Crie um outro bonitinho, sem acentos, e então utilize este novo nome.
$filename = uniqid() . '.zip';
copy($_FILES["Arquivo"]["tmp_name"], $filename);
$zip = new ZipArchive();
$zip->open($filename);
@braços>
1 - Se você não precisa do arquivo Zip gravado no servidor, não faça I/O desnecessário. Utilize o próprio arquivo temporário para abrir o Zip.
$zip->open( $_FILES["Arquivo"]["tmp_name"] );
2 - Se você precisa do arquivo gravado no servidor, não utilize o nome que vem no arquivo. Crie um outro bonitinho, sem acentos, e então utilize este novo nome.
$filename = uniqid() . '.zip';
copy($_FILES["Arquivo"]["tmp_name"], $filename);
$zip = new ZipArchive();
$zip->open($filename);
@braços
Então o problema é que não tenho como não usar acentos, esses arquivos que preciso fazer upload são gerados pelo meu cliente através do Bizagi Process Modeler aonde ele gera os nomes dos arquivos conformes nomes de menus e etc.
A pasta que ele vai fazer upload tem varios arquivos e pastas sendo eles img js css html por isso preferi tentar fazer com ele mandando um arquivo zipado ja que também não sei fazer pra ele upar pastas diretamente independentemente dos arquivos contidos nela pois varia.
http://forum.imasters.com.br/topic/499531-extrair-arquivo-zip-problema-de-acentuao/