如何解决通过 axios get 请求在前端显示音频文件 Nodejs Reactjs Mongodb,multer,Gridfs
我使用 mongodb 、 gridfs 、multer 来存储音频文件。 并且需要通过axios在reactjs前端展示音频文件。
app.get('/songs/getsong/:filename',(req,res) => {
console.log(req.params.filename);
const file = gfs
.find({
filename: req.params.filename
})
.toArray((err,files) => {
if (!files || files.length === 0) {
return res.status(404).json({
err: "no files exist"
});
}
gfs.openDownloadStreamByName(req.params.filename).pipe(res);
console.log(files)
return res.status(200);
});
});
import React,{ useEffect,useState} from 'react'
import Header from '../header/Header';
import "./home.css"
import axios from 'axios';
export default function Home(){
const [audiofile,setAudioFile] = useState()
axios.get('http://localhost:8000/songs/getsong/379500b35576a4c49792718aebfc27ef.mp3')
.then((res) => {
console.log(res);
setAudioFile(res)
}).catch((error) => {
console.log(error)
});
return (
<div>
<Header />
<form action="http://localhost:8000/songs/upload" method="post" enctype="multipart/form-data">
<h1>File Upload</h1>
<input id="file" type="file" accept="audio/*" name='file' />
<input type="submit" />
</form>
<audio
controls
src={audiofile}>
Your browser does not support the
<code>audio</code> element.
</audio>
</div>
)
}
这是文件请求
{
_id: 60774f8560de1713d4b06234,length: 11756413,chunkSize: 261120,uploadDate: 2021-04-14T20:25:25.300Z,filename: '379500b35576a4c49792718aebfc27ef.mp3',md5: '36d8d712eb886859b07952e49d4de6a6',contentType: 'audio/mpeg'
}
在邮递员中,它显示了一个音频文件,并且工作正常。我需要展示它 在前端。
Check Postman response ss here
谢谢。
解决方法
在本地,您可以使用 HTML5 Audio tag 播放音频,将 src 与音频的 URL 一起提供,就是这样。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。