【问题标题】:Force Download MP3 with PHP使用 PHP 强制下载 MP3
【发布时间】:2015-07-16 23:24:45
【问题描述】:

说实话:我找到了从 s******d 下载 mp3 文件的方法,但我无法直接下载 MP3,所有音乐都在浏览器中流式传输。

我已经尝试过这样的事情

<a href="direct_download.php?file=fineline.mp3">Download the mp3</a>

但我的下载链接不是.mp3,这是我下载文件的代码行

href="<?php echo $val['stream_url']?>?client_id=67739332564a7130c3a05f90f2d02d2e">Descargar</a>.

当我使用该选项时

direct_download.php?file=

只需下载一个具有该名称的文件

client_id=05b4f2000dad27aa9fc48d08915d7830.html

我使用的完整php代码是

<?php
$file = $_GET['file'];
header ("Content-type: octet/stream");
header ("Content-disposition: attachment; filename=".$file.";");
header("Content-Length: ".filesize($file));
readfile($file);
exit;
?>

可以像这样在任何锚点中访问:

<a href="direct_download.php?file=fineline.mp3">Download the mp3</a>

你能帮我吗,或者如果你有更好的想法,谢谢你们

【问题讨论】:

  • 你让自己面临Local File Inclusion 漏洞。
  • 你只是允许下载任何文件......我可以简单地做direct_download.php?file=../etc/passwd,你会遇到很多麻烦。

标签: php download mp3


【解决方案1】:

如果您使用的是 html5,则可以使用下载选项

<a href="url_to_your_file.mp3" download>Download the mp3</a>

否则,您可以使用 javascript

function saveAs(url) {    
  var filename = url.substring(url.lastIndexOf("/") + 1).split("?")[0];
  var xhr = new XMLHttpRequest();
  xhr.responseType = 'blob';
  xhr.onload = function() {
    var a = document.createElement('a');
    a.href = window.URL.createObjectURL(xhr.response);
    a.download = filename; 
    a.style.display = 'none';
    document.body.appendChild(a);
    a.click();
    delete a;
  };
  xhr.open('GET', url);
  xhr.send();
}

从你的链接调用它

<a href="javascript:" onclick="saveAs(url_to_your_file.mp3)">Download the mp3</a>

【讨论】:

  • 艾萨克 你真是个该死的天才!! javascript 工作完美
  • 你值得被点赞。 HTML5 非常干净。先生,我印象深刻。
猜你喜欢
  • 1970-01-01
  • 2022-01-23
  • 1970-01-01
  • 1970-01-01
  • 2012-05-21
  • 1970-01-01
  • 2020-11-18
  • 1970-01-01
  • 2013-02-24
相关资源
最近更新 更多