node.js - 有没有办法将音频下载从本地磁盘传递到 React.js 中的页面
问题描述
我正在开发一个录音机来保存用户录音,当点击三个点时,它会提供一个下载选项。我正在尝试做两件事:
- 下载为 .mp3 (现在它正在下载为 .weba 文件
- 我在休息 API(node.js)。如何将下载到本地磁盘的文件自动传递到另一个页面。(我已经创建了 React 路由,并希望将下载直接从编辑器页面传递到项目页面)。
我已经完成了 Matt damon 音频演示,但是我无法让我的工作。我仍在学习反应,希望有人能提供帮助。我已经在这里搜索了答案,但是不知道该怎么做。
//recorder.js
import { useEffect, useState } from "react";
const Recorder = () => {
const [audioURL, setAudioURL] = useState("");
const [isRecording, setIsRecording] = useState(false);
const [recorder, setRecorder] = useState(null);
useEffect(() => {
// Lazily obtain recorder first time we're recording.
if (recorder === null) {
if (isRecording) {
requestRecorder().then(setRecorder, console.error);
}
return;
}
// Manage recorder state
if (isRecording) {
recorder.start();
} else {
recorder.stop();
}
// Obtain the audio when ready.
const handleAudio = e => {
setAudioURL(URL.createObjectURL(e.data));
};
recorder.addEventListener("dataavailable", handleAudio);
return () => recorder.removeEventListener("dataavailable", handleAudio);
}, [recorder, isRecording]);
const startRecording = () => {
setIsRecording(true);
console.log(setIsRecording);
};
const stopRecording = () => {
setIsRecording(false);
};
return [audioURL, isRecording, startRecording, stopRecording];
};
async function requestRecorder() {
//const audio = audioToggle.checked || false;
const stream = await navigator.mediaDevices.getUserMedia({audio: true});
return new MediaRecorder(stream, {'type' : 'audio/mp3;'});
}
export default Recorder;
import React from "react";
import Recorder from "./recorder";
function Editor() {
let [audioURL, isRecording, startRecording, stopRecording] = Recorder();
return (
<div>
<div className="recorder">
<Recorder />
<audio src={audioURL} controls />
<button onClick={startRecording} disabled={isRecording}>Start</button>
<button onClick={stopRecording} disabled={!isRecording}>Stop</button>
{/* <button onClick={postRecording} disabled={!isRecording}>Save</button> */}
</div>
</div>
);
}
export default Editor;
解决方案
推荐阅读
- python - 尝试在 Azure 上的 Python 函数应用程序的 Zip 部署任务中使用 POST_BUILD_COMMAND 安装自定义滚轮后找不到模块
- sql - SQL:如何理解需要加入 3 个表的 2 个列的原因
- java - 索引超出范围,从 am 数组中删除项目
- javascript - Firebase 函数会在关闭实例之前等待匿名承诺完成吗?
- java - 如何在Java中的整个字符串中删除偶数位置的字母?
- c - 什么是寄存器 %fs:
在 gnu 汇编程序中? - android - 我将如何使用 GSON 库解析这个传入的 JSON 字符串?
- javascript - 如何让您的不和谐机器人在删除消息后记录消息?
- python - Pandas 重新索引并将列分配给新列
- elasticsearch - 旧日志数据上的 filebeat 配置更改