Espero que este código seja útil para você assim como é para mim.
Se possível deixe seu cometário avaliando.
<?php function downloadExcecao ($arquivo,$novoNome){
$destino ="c:/www/site/temp/$novoNome"; //diretório desde a raíz
copy($arquivo, $destino);
print("<script>var pg = window.open('www.site.com.br/temp/$novoNome','', 'width=200, height=1, top=0, left=0'); if(!pg){alert('O Bloqueador de Pop-up est\xE1 ativado, para fazer download de arquivos, na faixa amarela acima, clique no bot\xE3o OP\xC7\xD5ES, depois clique em PERMITIR POPUPS, ou DESBLOQUEAR.'); history.back(1);}else{history.back(1);}</script>");
exit;
}
function downloadArquivo($nomeArquivo){
$arquivo = "c:/www/site/img/".$nomeArquivo; /// endereço do arquivo que será feito download
$novoNome = "novoNomeArquivo.extencao"; ///substituir espaço por "_" caso necessário e não usar acento///
if(file_exists($arquivo)){ // faz o teste se o arquivo realmente existe antes de forçar o download do mesmo//
/////pegar extenção////////////
list($width, $height, $type, $attr) = getimagesize($arquivo);
$ext = image_type_to_extension($type);
///////////////////////////
switch($ext){ // verifica a extensão do arquivo para pegar o tipo
case "pdf": $tipo="application/pdf"; break;
case "exe": //$tipo="application/octet-stream"; break;
case "zip": $tipo="application/zip"; break;
case "rar": $tipo="application/rar"; break;
case "doc": $tipo="application/msword"; break;
case "docx": $tipo="application/msword"; break;
case "odt": $tipo="application/vnd.oasis.opendocument.text"; break;
case "xls": $tipo="application/vnd.ms-excel"; break;
case "ppt": $tipo="application/vnd.ms-powerpoint"; break;
case "gif": $tipo="image/gif"; break;
case "png": $tipo="image/png"; break;
case "jpeg": $tipo="image/jpeg"; break;
case "mp3": $tipo="audio/mpeg"; break;
case "php": // deixar vazio por seurança
case "htm": // deixar vazio por seurança
case "html": // deixar vazio por seurança
case "asp": // deixar vazio por seurança
}
if(isset($tipo)){
if($ext=="doc" || $ext=="docx" || $ext=="odt"){ /// caso o arquivo seja com essas extensões então força download de outra forma//////
downloadExcecao($arquivo,$novoNome);
}else{
// Configuramos os headers que serão enviados para o browser
header('Content-Description: File Transfer');
header("Content-Type: ".$tipo);
header('Content-Disposition: attachment; filename="'.$novoNome.'"');
header('Content-Type: application/octet-stream');
header('Content-Transfer-Encoding: binary');
header('Content-Length: ' . filesize($arquivo));
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Expires: 0');
// Envia o arquivo para o cliente
ob_end_clean();
flush();
readfile($arquivo);
}
}else{
print "<script>alert('Não é possível fazer o download deste arquivo, tente novamente mais tarde.');</script>";
}
exit; // aborta pós-ações
}
}
?>
0 comentários:
Postar um comentário