我正在尝试从http audio stream
服务器管道nodejs
:
var streamPath = 'http://127.0.0.1:1485/mystream.mp3';
var stat = fs.statSync(streamPath);
response.writeHead(200, {'Content-Type': 'audio/mpeg','Content-Length': stat.size});
fs.createReadStream(streamPath).pipe(response);
问题是fs
不喜欢绝对路径,我收到以下错误:
错误:ENOENT:没有这样的文件或目录,stat'C:\ myserver \ http:\ 127.0.0.1:1485 \ mystream.mp3'
我找不到使用absolute path
的方法。甚至可以使用fs
?
答案 0 :(得分:0)
'http://127.0.0.1:1485/mystream.mp3'
不是绝对路径,而是URL。
绝对路径类似于文件系统上的/home/x/dir/file.txt
。
如果您想从网址获取流,则需要使用http
或request
。或者,如果要在不使用网络的情况下在文件系统上获取文件,则需要在文件系统上使用路径而不是URL。
fs.createReadStream
只能打开文件系统中的本地文件。
有关详细信息,请参阅:
要通过网络获取文件,请参阅:
答案 1 :(得分:0)
您正试图通过fs
访问远程资源 - 这是错误的。 fs
旨在用于Local Filesystem
。如果要访问任何远程资源,则必须使用http
或https
。但是,如果我看到了正确的内容,那么您正在尝试访问localhost
,这应该有用。
您的应用程序正在尝试访问以下文件:C:\myserver\http:\127.0.0.1:1485\mystream.mp3
如果仔细观察无法正常工作。您的路径与本地路径和远程源(实际为localhost
)混合在一起。尝试修复你的路径,这应该可以解决你的问题。请注意,fs
仅适用于您的本地系统。
您还应该考虑fs.statSync
这将阻止其他所有内容直到完成。
<强>文档:强>
此致 Megajin