Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

ROGERIODOS

Download Arquivo MP3

Recommended Posts

Olá, bom dia!
Estou querendo fazer download de um arquivo mp3 através do seguinte link: http://libsyn.com/media/eslpod/ESLPod_1.mp3

Este arquivo está vindo com "0 bytes", porém, seu tamanho original é de "1,30 MB".

Meu código está da seguinte maneira:

<?PHP

header('Content-Type: application/mp3');
header('Content-Disposition: attachment; filename=http://libsyn.com/media/eslpod/ESLPod_1.mp3');
header('Pragma: no-cache');

?>


Podem me ajudar, por favor?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi Rafa Jaques, boa tarde!

Quero que o usuário faça download dessa URL que estará em meu servidor.

 

O link que usei de exemplo é porquê ele redireciona para uma outra URL (assim como quero fazer) onde o mp3 é carregado no próprio browser.

 

Eu consigo salvar este arquivo se clicar com o botão direito do mouse e pedir para fazer o download mas o que quero é fazer o download do arquivo direto via PHP.

 

Consegui te explicar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Segue um exemplo que sempre utilizo.

define('LOCAL','pasta/arquivo.mp3');
    
    header('Content-Description: File Transfer');
    header('Content-Disposition: attachment; filename=vinheta-pipoufest.mp3');
    header('Content-Type: application/octet-stream');
    header('Content-Transfer-Encoding: binary');
    header('Content-Length: '.filesize(LOCAL));
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
    header('Expires: 0');
    readfile(LOCAL);

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Segue um exemplo que sempre utilizo.

define('LOCAL','pasta/arquivo.mp3');
    
    header('Content-Description: File Transfer');
    header('Content-Disposition: attachment; filename=vinheta-pipoufest.mp3');
    header('Content-Type: application/octet-stream');
    header('Content-Transfer-Encoding: binary');
    header('Content-Length: '.filesize(LOCAL));
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
    header('Expires: 0');
    readfile(LOCAL);

Alaerte Gabriel, boa tarde!

Muito obrigado pelo exemplo. Ele até faz download do arquivo, porém, ele vem com 0 bytes.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se é só forçar o download de um arquivo pelo navegador, por que não usa o atributo download do HTML?

<a href="http://libsyn.com/media/eslpod/ESLPod_1.mp3" download>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi.

 

Você pode utilizar este script que criei. Tem um tutorial no meu blog: Forçar o download de um arquivo com PHP.

 

Espero que funcione.

 

Rafa Jaques, boa tarde!

Muito obrigado pelo retorno e pela indicação do post em seu blog (ele tem um conteúdo muito bacana), porém, mesmo assim, não consegui resolver o problema. Não sei se estou cometendo alguma falha durante a implementação mas está ocorrendo um erro.

 

O script está ficando da seguinte maneira:

<?php
/*
* http://www.phpit.com.br/artigos/forcar-o-download-de-um-arquivo-melhorado-e-bug-corrigido.phpit
* Blog do Rafa Jaques
*/
define('DIR_DOWNLOAD', 'http://libsyn.com/media/eslpod/');

$arquivo = $_GET['ESLPod_1.mp3'];
$arquivo = filter_var($arquivo, FILTER_SANITIZE_STRING);
$arquivo = basename($arquivo);

$caminho_download = DIR_DOWNLOAD . $arquivo;

if (!file_exists($caminho_download))
   die('Arquivo não existe!');

header('Content-type: octet/stream');
header('Content-disposition: attachment; filename="'.$arquivo.'";');
header('Content-Length: '.filesize($caminho_download));
readfile($caminho_download);

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Se é só forçar o download de um arquivo pelo navegador, por que não usa o atributo download do HTML?

<a href="http://libsyn.com/media/eslpod/ESLPod_1.mp3" download>

Dessa forma não está funcionando. Se você testar ai verá que o download não será realizado. O áudio será executado no próprio browser. Acredito que isso ocorra por causa do redirecionamento que é feito.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dessa forma não está funcionando. Se você testar ai verá que o download não será realizado. O áudio será executado no próprio browser. Acredito que isso ocorra por causa do redirecionamento que é feito.

 

Eu fiz o teste aqui e funcionou.

Nesse caso só não funcionará no Internet Explorer antigo e no Safari.

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

 

Rafa Jaques, boa tarde!

Muito obrigado pelo retorno e pela indicação do post em seu blog (ele tem um conteúdo muito bacana), porém, mesmo assim, não consegui resolver o problema. Não sei se estou cometendo alguma falha durante a implementação mas está ocorrendo um erro.

 

O script está ficando da seguinte maneira:

<?php
/*
* http://www.phpit.com.br/artigos/forcar-o-download-de-um-arquivo-melhorado-e-bug-corrigido.phpit
* Blog do Rafa Jaques
*/
define('DIR_DOWNLOAD', 'http://libsyn.com/media/eslpod/');

$arquivo = $_GET['ESLPod_1.mp3'];
$arquivo = filter_var($arquivo, FILTER_SANITIZE_STRING);
$arquivo = basename($arquivo);

$caminho_download = DIR_DOWNLOAD . $arquivo;

if (!file_exists($caminho_download))
   die('Arquivo não existe!');

header('Content-type: octet/stream');
header('Content-disposition: attachment; filename="'.$arquivo.'";');
header('Content-Length: '.filesize($caminho_download));
readfile($caminho_download);

 

Por acaso esse site libsyn.com é seu? Ou você está tentando forçar o download a partir de outro domínio?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Por acaso esse site libsyn.com é seu? Ou você está tentando forçar o download a partir de outro domínio?

Rafa Jaques, este site não é meu.

Se essa era uma informação relevante no momento de minha dúvida, me desculpe.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O código que passei não tem como dar errado. Você está tentando utilizar o caminho de uma URL em outro site e não um caminho físico do servidor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Rafa Jaques, este site não é meu.

Se essa era uma informação relevante no momento de minha dúvida, me desculpe.

 

Certamente. Essa é uma informação crucial.

Você está tentando forçar o download de um arquivo que não está no seu servidor. Essa é uma tarefa bastante complexa, porque você depende de outro endereço.

 

Os scripts que mostramos a você servem apenas para arquivos locais, não remotos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.