gpt4 book ai didi

Javascript:将输入音频形成为音频下载链接?

转载 作者:行者123 更新时间:2023-12-03 02:19:40 25 4
gpt4 key购买 nike

这是一个奇怪的问题,但它已经让我困惑了一段时间。

我有这个音频输入:

<input required type="file" id="inputAudio" accept="audio/*" onchange="downloadLink(this);">

当您提交一些音频时,我想在此元素上添加一个下载链接:

<a id="blah">Download Audio</a>

我尝试过做一些奇怪的事情,比如这样:

function downloadLink(element) {
var file = element.files[0];
var reader = new FileReader();
reader.onload = function(e) {
var data = file.type + ";charset=utf-8," + encodeURIComponent(e.target.result);
var link = document.getElementById("blah");
link.href = "data:" + data;
link.download = "someName." + file.name.split(".").pop();
};
reader.readAsDataURL(file);
}

但是,上述情况会导致 Chrome 中出现下载错误。

这是一个用于测试目的的 HTML 文件:

<!DOCTYPE html>
<html>
<head>
<title>Weird Problem</title>
<script>
function downloadLink(element) {
var file = element.files[0];
var reader = new FileReader();
reader.onload = function(e) {
var data = file.type + ";charset=utf-8," + encodeURIComponent(e.target.result);
var link = document.getElementById("blah");
link.href = "data:" + data;
link.download = "someName." + file.name.split(".").pop();
};
reader.readAsDataURL(file);
}
</script>
</head>
<body>
<input required type="file" id="inputAudio" accept="audio/*" onchange="downloadLink(this);">
<a id="blah">Download Audio</a>
</body>
</html>

编辑:我刚刚注意到你可以嵌入 HTML 文件:

function downloadLink(element) {
var file = element.files[0];
var reader = new FileReader();
reader.onload = function(e) {
var data = file.type + ";charset=utf-8," + encodeURIComponent(e.target.result);
var link = document.getElementById("blah");
link.href = "data:" + data;
link.download = "someName." + file.name.split(".").pop();
};
reader.readAsDataURL(file);
}
<!DOCTYPE html>
<html>
<head>
<title>Weird Problem</title>
</head>
<body>
<input required type="file" id="inputAudio" accept="audio/*" onchange="downloadLink(this);">
<a id="blah">Download Audio</a>
</body>
</html>

任何帮助都会很棒!

最佳答案

诀窍是您应该将其转换为 ObjectURL,然后顾名思义,您可以将其用作 href 的 url,现在已经在 safari、Chrome、FireFox 上进行了测试:

var file = element.files[0];
var link = document.getElementById("blah");
link.href = window.URL.createObjectURL(file);
link.download = "someName." + file.name.split(".").pop();

这里工作在PlayCode.io

关于Javascript:将输入音频形成为音频下载链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49217708/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com