Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá,
Pesquisei alguns posts, baixei alguns exemplos e não consegui, logo segue minha dúvida:
1. Em meu servidor tem uma pasta que fica fora do acesso http, chama-se dados.
2. Logo, preciso fazer o download de um arquivo daquela pasta, antes usava um componente do ASP que fazia isso (SoftArtisans.FileUp), agora vou mudar para PHP.
Logo, o meu diretório é "esse": D:/HTTP/nomedocliente/web/etiquetas/etiqueta.doc
E o código que estou usando é esse:
<?php
set_time_limit(0);
$local_arquivo = addslashes($_GET['local']); // Estou enviando o diretorio que citei acima pela QueryString.
if(!file_exists($local_arquivo))
{
echo 'Esta caindo aqui, que não existe o arquivo.';
}header('Cache-control: private');
header('Content-Type: application/octet-stream');
header('Content-Length: '.filesize($local_arquivo));
header('Content-Disposition: filename='.$arquivo);
header("Content-Disposition: attachment; filename=".basename($local_arquivo));
readfile($local_arquivo);
}
?>
Como posso solucionar?
Obrigado.Quando você fala isso:
<?php
file_exists($local_arquivo);
Você deveria passar a PATH + NOME + Extensão.
Ex:
file_exists('D:/HTTP/nomedocliente/web/etiquetas/etiqueta.doc')
Ou seja todo o seu $_GET['local'] deve conter a URL, ficando algo +/- assim:
http://localhost/tt.php?local=D:/HTTP/nomedocliente/web/etiquetas/etiqueta.doc
Para facilitar a sua vida você pode adicionar uma 'URL base' até a pasta dos downloads
E apenas passar o nome do arquivo pelo GET/queryString... Ex:
<?php
if(isset($_GET['local']) && $_GET['local'] != ''){
$local = $_GET['local'];
$url_base = 'D:/HTTP/nomedocliente/web/etiquetas/';
if(file_exists($url_base . $local)){
//...
}
}
Ex da chamada:
[http://localhost/tt.php?local=etiqueta.doc](http://localhost/tt.php?local=etiqueta.doc)
Acho q deu pra pegar hehe.
Abraços.
Edit:
Pelo amor de Deus
utilize Early Return....
Ex:
<?php
if(!file_exists($local_arquivo)){
die('Arquivo não existe');
}
header('Cache-control: private');
header('Content-Type: application/octet-stream');
header('Content-Length: '.filesize($local_arquivo));
header('Content-Disposition: filename='.$arquivo);
header("Content-Disposition: attachment; filename=".basename($local_arquivo));
readfile($local_arquivo);
Já tentou verificar se esse GET local está retornando algo? Tenta dar um var_dump...