在nodejs中使用fs的绝对路径

时间:2016-12-27 13:48:47

标签: javascript node.js http

我正在尝试从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

2 个答案:

答案 0 :(得分:0)

'http://127.0.0.1:1485/mystream.mp3'不是绝对路径,而是URL。

绝对路径类似于文件系统上的/home/x/dir/file.txt

如果您想从网址获取流,则需要使用httprequest。或者,如果要在不使用网络的情况下在文件系统上获取文件,则需要在文件系统上使用路径而不是URL。

fs.createReadStream只能打开文件系统中的本地文件。

有关详细信息,请参阅:

要通过网络获取文件,请参阅:

答案 1 :(得分:0)

您正试图通过fs访问远程资源 - 这是错误的。 fs旨在用于Local Filesystem。如果要访问任何远程资源,则必须使用httphttps。但是,如果我看到了正确的内容,那么您正在尝试访问localhost,这应该有用。

您的应用程序正在尝试访问以下文件:C:\myserver\http:\127.0.0.1:1485\mystream.mp3如果仔细观察无法正常工作。您的路径与本地路径和远程源(实际为localhost)混合在一起。尝试修复你的路径,这应该可以解决你的问题。请注意,fs仅适用于您的本地系统。

您还应该考虑fs.statSync这将阻止其他所有内容直到完成。

<强>文档:

  1. fs:https://nodejs.org/api/fs.html

  2. http:https://nodejs.org/api/http.html

  3. https:https://nodejs.org/api/https.html

  4. 此致 Megajin