javascript - 使用 react js 播放本地 mp3 文件而不导入
问题描述
我想使用 react.js 创建一个显示我选择的不同歌曲的应用程序问题是它不适用于本地文件。路径没问题(刚刚在 DOM 中检查过)我尝试过使用相对路径和绝对路径,但它仍然是一样的。
我已经尝试了很多东西,比如导入 react-sound、react-audio-player ......
我尝试在文件开头使用“./songs/song.mp3”导入歌曲直接导入mp3文件,它可以工作,但它没有用,因为如果你想添加它必须手动添加/删除歌曲。
当我按下播放按钮时,它总是使承诺失败并返回错误:
DOMException: 加载失败,因为找不到支持的源。
import React from "react";
const SongCard = (props) => {
const playAudio = () => {
const audio = new Audio(props.song.path)
const audioPromise = audio.play()
if (audioPromise !== undefined) {
audioPromise
.then(() => {
// autoplay started
console.log("works")
})
.catch((err) => {
// catch dom exception
console.info(err)
})
}
}
return (
<div className="songCard">
<div className="coverContainer">
<img src=""/>
</div>
<div className="infoContainer">
<div className="playPauseButton" onClick={playAudio}>►</div>
<div className="songTitle">{props.song.nom}</div>
</div>
</div>
);
};
export default SongCard;
有人有想法吗?
解决方案
由于安全问题,您将无法通过在浏览器中运行的 JavaScript 以编程方式访问本地文件。
获取本地文件的唯一方法是:
- 用户通过文件选择文件
<input>
- 用户将文件拖放到您的应用程序中
通过这种方式,用户明确授予您访问这些文件的权限。
您可以围绕这些交互设计您的应用程序,或者
您可以在本地启动一个 Web 服务器,它可以访问您的音频文件并将这些文件流式传输到您的应用程序或将文件上传到云服务。
推荐阅读
- django - Django Foreign Key model cant display in view JSON
- jquery - ASP.net 按钮禁用几秒钟并同时运行服务器代码
- ios - 如何在导航栏中设置父视图的文本字段全宽
- c# - 如何将 Linq 转换为 Lambda 表达式
- html - Navbar button won't align right when window is maximized
- reactjs - react-native:
remove keyboard predictions - c# - Caliburn.Micro WPF: IoC.Get Returns Null
- html - Perl HTML::LinkExtractor returns different links on different calls
- sql - 计算路线段的成本
- elasticsearch - Windows 上的 ElasticSearch 错误