如何使用 java 脚本 Save/Download 一个 mp3 DataURL 对象?
How to Save/Download a mp3 DataURL object using java script?
我允许用户从本地文件系统select一个mp3
文件,然后
允许下载相同的文件。学习用。
<script type="text/javascript">
window.onload = function() {
document.querySelector('#musicFile').addEventListener('change', function(e){
var file = e.target.files[0];
console.log(e, file);
if(file.type.match('audio.*')) { // if its an audio file
var fReader = new FileReader();
fReader.onload = function(ev) { //onload event
var dataUrl = ev.target.result;
var downloadCon = document.querySelector('#download')
downloadCon.href = dataUrl;
};
fReader.readAsDataURL(file); //start reading the file
}
});
}
</script>
HTML正文:
<body>
<div class="controls">
<input type="file" id="musicFile">
<a id='download'href='#' download='music.mp3' class='downloadLink'>
Download File
</a>
</div>
</body>
当我点击 Download File
时,没有任何反应。你能告诉我我做错了什么吗?
您不需要使用 FileReader 来执行此操作。简单地说,您需要创建一个 URLObject 并使 A 标记指向它。代码(在 Chrome 和 Firefox Linux 下测试):
<script type="text/javascript">
window.onload = function() {
document.querySelector('#musicFile').addEventListener('change', function(e){
var file = e.target.files[0];
console.log(e, file);
if(file.type.match('audio.*')) { // if its an audio file
document.getElementById( 'download' ).href = URL.createObjectURL(file);
}
});
}
</script>
更具体地说,我在您的代码中做了什么 - 我删除了所有 FileReader 代码并添加了
document.getElementById( 'download' ).href = URL.createObjectURL(file);
在原地。我没碰你的HTML.
希望对您有所帮助。
我允许用户从本地文件系统select一个mp3
文件,然后
允许下载相同的文件。学习用。
<script type="text/javascript">
window.onload = function() {
document.querySelector('#musicFile').addEventListener('change', function(e){
var file = e.target.files[0];
console.log(e, file);
if(file.type.match('audio.*')) { // if its an audio file
var fReader = new FileReader();
fReader.onload = function(ev) { //onload event
var dataUrl = ev.target.result;
var downloadCon = document.querySelector('#download')
downloadCon.href = dataUrl;
};
fReader.readAsDataURL(file); //start reading the file
}
});
}
</script>
HTML正文:
<body>
<div class="controls">
<input type="file" id="musicFile">
<a id='download'href='#' download='music.mp3' class='downloadLink'>
Download File
</a>
</div>
</body>
当我点击 Download File
时,没有任何反应。你能告诉我我做错了什么吗?
您不需要使用 FileReader 来执行此操作。简单地说,您需要创建一个 URLObject 并使 A 标记指向它。代码(在 Chrome 和 Firefox Linux 下测试):
<script type="text/javascript">
window.onload = function() {
document.querySelector('#musicFile').addEventListener('change', function(e){
var file = e.target.files[0];
console.log(e, file);
if(file.type.match('audio.*')) { // if its an audio file
document.getElementById( 'download' ).href = URL.createObjectURL(file);
}
});
}
</script>
更具体地说,我在您的代码中做了什么 - 我删除了所有 FileReader 代码并添加了
document.getElementById( 'download' ).href = URL.createObjectURL(file);
在原地。我没碰你的HTML.
希望对您有所帮助。