gpt4 book ai didi

node.js - 将静态 URL 更改为动态 - NodeJS

转载 作者:搜寻专家 更新时间:2023-10-31 23:52:10 25 4
gpt4 key购买 nike

我有一个目录,用于上传用户上传的所有歌曲。我已经为这个应用程序使用了 mongodb,mongodb 工作正常但我想使用src url 喜欢上传/一些东西到歌曲/用户/歌曲名称我尝试使用 Router.get 如 Controller.js 所示但是当我使用它时,我得到了内部 500 错误,请让我知道我哪里出错了。

controller.js

Router.get('/songs/:artist/:song', (req, response) => {
console.dir(req.query)
let file = './uploads/01-Whole Lotta Love.mp3'
var stat = FileSystem.statSync(file)

response.setHeader('Content-Type', 'audio/mpeg');
response.setHeader('Content-Length', stat.length);

fs.createReadStream(file).pipe(response);
})

app.js

app.use(Express.static(path.join(__dirname, 'uploads')));

profile.ejs

<table border="1">
<% artist.songs.forEach((song) => { %>
<tr>
<td> <%= song.song %> </td>
<td>
<audio controls>
<source src="./songs/<%= artist.artistName+ '/' + song.audioPath %>" type="audio/mpeg">
Your browser does not support the audio element.
</audio>
</td>
<td>3k listens</td>
<td>2k likes</td>
<td>2k comments</td>
</tr>
<% }) %>
</table>

就像我为 songs/anyusername/songname 写的一样,将使用目录 uploads/songname

提前谢谢你:)

最佳答案

试试这段代码,在浏览器中打开:http://host:port/song/foo/bar
并在评论中写下你得到了什么:

const 
fs = require('fs'),
path = require('path'),
bufferSize = 100 * 1024;

Router.get('/songs/:artist/:song', (req, res) => {
let
file = '01-Whole Lotta Love.mp3';
file = path.join(__dirname, 'uploads', file);

console.log('Piping file:', file); // check if path is correct

fs.stat(file,
(err, stat) => {
if(err) {
return res.status(500).send(err); // output error to client
}

res.writeHead(200, {
'Cache-Control': 'no-cache, no-store, must-revalidate',
'Pragma': 'no-cache',
'Expires': 0,
'Content-Type': 'audio/mpeg',
'Content-Length': stat.size
});
fs.createReadStream(file, {bufferSize}).pipe(res);
});
})

关于node.js - 将静态 URL 更改为动态 - NodeJS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40096380/

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