Ir para conteúdo
Fórum Script Brasil
  • 0

Renomear arquivo antes do Download


faelmc

Pergunta

Salve Galera!

Sou novo no fórum, sou iniciante em php, estou tentando montar um código simples, para renomear um arquivo

Seguinte, estou montando um blog, onde ficarão disponíveis alguns arquivos para download, como .pdf .mp3. Estes arquivos vêm de outros domínios da Internet a fora.

O Primeiro desafio foi forçar o download deles, a solução mais simples que encontrei, foi usar a tag download em html5

Exemplo:

<a href="http://linkdafoto.jpeg" download="nomedafoto.jpg">

Baseado nesta tag, montei este Script em php:

<?php
echo '<a href="';
echo $_GET['url']; echo '" download="'; echo $_GET['download']; echo '">'; echo $_GET['nome']; echo '</a>';
?>

Funciona muito bem, usando um link como este:

http://dominioteste.net/download.htm?url=https://linkdoarquivo.mp3&nome=Download&download=NomeDoArquivo.mp3

Assim, é montando um link de download dentro do php, e download começa, a única coisa que não consegui, foi renomear o arquivo. A varíavel (nome), é preenchida como podemos ver acima, mas no caso dos arquivos mp3, o nome permanece o original,

Como renomear um arquivo a ser baixado, usando php, antes do Download começar?

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

opa cara eu tenho um script que funciona assim:

arquivo html:

<iframe width="1px" height="1px" id="frameDownloadArquivo"></iframe>

<a href='download_anexos.php?arquivo=" . $arquivo . "&nomeOriginal=".$nomeOriginal."&diretorio=" . $diretorio . "' target='frameDownloadArquivo'>DOWNLOAD</a>

arquivo php separado:

<?php

$diretorio = './arquivos/' . $_GET['diretorio'] . '/';
$arquivo = $_GET['arquivo'];
$NomeArquivo = $_GET['nomeOriginal'];
$arquivo = $diretorio . $arquivo; // Aqui a gente só junta o diretório com o nome do arquivo

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

ve ai se te ajuda

Link para o comentário
Compartilhar em outros sites

  • 0

Muito Obrigado pela ajuda, euler

O script, funciona muito bem, o arquivo é renomeado

Porém no meu caso não conseguir fazer ele funcionar com URLs, vindas de fora,
Exemplo:

http://domino.com/download.php?arquivo=http://outrodominio.com/vida.pdf

Procurando na net geral, encontrei este Script: http://pixeline.be/blog/development/php-force-download-script-convert-url-to-localpath-370.html
Com essa idéia, mas não funcionou, pode dar uma ajuda irmão?

Link para o comentário
Compartilhar em outros sites

  • 0

Voltando ao script que te mandei você pode tentar com estas modificações:

arquivo html:

Agora ao invés de na variavel $arquivo você enviar somente o nome do Arquivo, você envia a url completa. E em $nomeOriginal você envia o nome do arquivo que vai aparecer para download.

<iframe width="1px" height="1px" id="frameDownloadArquivo"></iframe>

<a href='download_anexos.php?arquivo=" . $arquivo . "&nomeOriginal=".$nomeOriginal."' target='frameDownloadArquivo'>DOWNLOAD</a>

arquivo php separado:

<?php

$arquivo = $_GET['arquivo'];
$NomeArquivo = $_GET['nomeOriginal'];

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

Cara o Script que você me mandou ai antes é muito completo, te recomendo ao trazer algumas coisas de la para o script que eu te mandei.

Link para o comentário
Compartilhar em outros sites

  • 0

Salve!

euler01, muito obrigado parceiro
Com sua ajuda e um pouco de estudo sobre php, consegui montar um script, que funciona muito bem em qualquer navegador
Força o download de qualquer tipo de arquivo, e atribui um novo nome

Caso alguém queira fazer, algo neste estilo, este script, provalvemente vai ajudar

<?php
//Script Forçar Download e Renomear arquivo
//Créditos a euler01
//Originalmente disponível em: https://www.scriptbrasil.com.br/forum/topic/175402-renomear-arquivo-antes-do-download/
if ($_GET['url']) {
$file = $_GET['url'];
$nome = $_GET['nome'];
header("Content-Description: File Transfer");
header("Content-Type: application/octet-stream");
header('Content-Disposition: attachment; filename="' . ($nome) . '";');	
header('Content-Length: ' . strlen(file_get_contents($file)));
readfile($file);
}
else {
header('Location: http://SeuSite.com'); //Endereço para redirecionar, caso o download não seja possível
}
?>

arquivo html:

<a href="http://SeuSite.com/download.php?url=http://QualquerOutroSite.com/Exemplo.pdf">Download Exemplo.pdf</a> 

é isso ae galera, valeu!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...