如何为mp3文件制作下载属性?
How to make a download attribute for an mp3 file?
我一直在尝试下载 link 一个 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>
如果有人能找到解决方法,请告诉我。谢谢!
您需要将此 HTTP header 添加到您的响应中以使浏览器强制下载:
Content-Disposition: attachment; filename=your_filename.mp3
例如,如果您在服务器端使用 PHP,您可以创建一个脚本来发送上述 header 后跟实际文件内容:
$path = $_GET['path'];
header('Content-Disposition: attachment; filename=' . basename($path));
readfile($path);
如果您调用此脚本 download.php,则链接到 download.php?path=/path/to/your/file.mp3 将使浏览器 pop-up 成为 file.mp3 的下载对话框.
仅使用 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>
.then(response => response.blob()) 缺少 return
我一直在尝试下载 link 一个 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>
如果有人能找到解决方法,请告诉我。谢谢!
您需要将此 HTTP header 添加到您的响应中以使浏览器强制下载:
Content-Disposition: attachment; filename=your_filename.mp3
例如,如果您在服务器端使用 PHP,您可以创建一个脚本来发送上述 header 后跟实际文件内容:
$path = $_GET['path'];
header('Content-Disposition: attachment; filename=' . basename($path));
readfile($path);
如果您调用此脚本 download.php,则链接到 download.php?path=/path/to/your/file.mp3 将使浏览器 pop-up 成为 file.mp3 的下载对话框.
仅使用 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>
.then(response => response.blob()) 缺少 return