paulocamboim
(usa Slackware)
Enviado em 19/08/2010 - 15:00h
Não sei se é a melhor solução, mas segue o que fiz
1. Primeiro
Criei um arquivo .htaccess dentro da pasta que recebe os arquivos de upload, com o seguinte código
RewriteEngine on
# Nao deixa acesso a nenhum arquivo, evitando execucao de codigo malicioso pelo usuario
RewriteRule .(\.*)$ ../index.php
Ou seja, caso o usuário tente acessar um arquivo diretamente, ele é redirecionado para a página principal. Mas pode surgir um outro problema, como que o usuário vai baixar um arquivo? Pois se você digitar o link completo vai voltar pra index.
2. Segundo
Eu criei um arquivo chamado getDownload.php que basicamente é:
// caminho absoluto para a pasta onde esta o seu site
$localPath = "/srv/httpd/sua_pagina/";
// nome do arquivo na pasta de uplo
$arquivo = "nome-unico-do-arquivo-salvo-na-pasta-de-upload";
// caminho absoluto + nome do arquivo
$localFile = $localPath."/upload/".$arquivo;
// Configuramos os headers que serao enviados para o browser
header('Content-Description: File Transfer');
header('Content-Disposition: attachment; filename="nome-original-do-arquivo"');
header('Content-Type: application/octet-stream');
header('Content-Transfer-Encoding: binary');
header('Content-Length: ' . filesize($localFile) );
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Expires: 0');
// Envia o arquivo para o cliente
readfile($localFile);
Pronto, feito isso aparentemente ta tudo ok.
Alguma sugestão ?