我一直在尝试为mp3文件建立下载链接,但似乎什么也没做。 mp3文件在正确的位置,但是当我单击它时,它会在播放音频文件的新选项卡中打开。文件位置是这样的:
<a href="forsongstab/tracks/Villagers of Ioannina City - Age of Aquarius - 01 Welcome.mp3" download="Villagers of Ioannina City - Age of Aquarius - 01 Welcome"><img class="dli" src="../images/downloadicon.jpeg">01. Welcome</a>
[如果有人能找到解决方法,请告诉我。谢谢!
仅使用javascript的解决方案:
function downloadBlob(blob, filename) {
var a = document.createElement('a');
a.download = filename;
a.href = blob;
document.body.appendChild(a);
a.click();
a.remove();
}
function downloadResource(url) {
filename = url.split('\\').pop().split('/').pop();
fetch(url, {
mode: 'no-cors'
})
.then(response => response.blob())
.then(blob => {
let blobUrl = window.URL.createObjectURL(blob);
downloadBlob(blobUrl, filename);
})
.catch(e => console.error(e));
}
<a href="#" onClick="javascript:downloadResource('https://file-examples.com/wp-content/uploads/2017/11/file_example_MP3_700KB.mp3')">01. Welcome</a>
您将需要将此HTTP标头添加到您的响应中,以使浏览器强制进行下载:
Content-Disposition: attachment; filename=your_filename.mp3
例如,如果您在服务器端使用PHP,则可以创建一个脚本,该脚本发送上面的标头,然后发送实际的文件内容:
$path = $_GET['path'];
header('Content-Disposition: attachment; filename=' . basename($path));
readfile($path);
如果您将此脚本称为download.php,然后链接到download.php?path = / path / to / your / file.mp3,则会使浏览器弹出一个file.mp3的下载对话框。