Bom Dia,
Hoje finalizei um sistema e por incrível que parece por algum motivo estranho ele corrompia os downloads em zip, fazendo algumas buscas comentaram do mod deflat do apache, onde ele faz a compressão dos arquivos para melhorar a performance do site e ocupar menos banda (Para testes: http://www.whatsmyip.org/http-compression-test/ ) .
Ok, então no meu .htaccess inseri a seguinte linha.
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/x-javascript application/javascript application/ecmascript application/rss+xml
</IfModule>
Read More
Hoje finalizei um sistema e por incrível que parece por algum motivo estranho ele corrompia os downloads em zip, fazendo algumas buscas comentaram do mod deflat do apache, onde ele faz a compressão dos arquivos para melhorar a performance do site e ocupar menos banda (Para testes: http://www.whatsmyip.org/http-compression-test/ ) .
Ok, então no meu .htaccess inseri a seguinte linha.
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/x-javascript application/javascript application/ecmascript application/rss+xml
</IfModule>
Onde segundo ele deveria apenas compactar estes "mimes types", porém ele acabou compactando o .zip achei estranho, porém acabou resolvendo o problema, ainda fiquei "encucado" com o porque que ele compactou sendo que não declarei ele.
Download do zip resolvido é hora de ir para o php, onde vamos limitar a velocidade do download do usuário.
// header para forçar download
header('Content-Description', 'File Transfer');
header('Pragma: public');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Cache-Control: private', false);
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="arquivo.zip"'); // Nome do arquivo
header('Content-Transfer-Encoding: binary');
header('Content-Length: ' . filesize('./upload/arquivo.zip'));
header('Connection: close');
// Metodo com limitacao de banda para 150k
flush();
$arqAberto = fopen("./upload/arquivo.zip", 'rb');
while (!feof($arqAberto)) {
echo fread($arqAberto, round(150 * 1024));
flush();
sleep(1);
}
fclose($arqAberto);
Forte abraço
Marcos Carraro.