如何用node.js发送文件

你如何发送node.js / express文件。

我正在使用Rackspace Cloudfiles并希望将图像/video发送到远程存储器,但是我不确定它如何读取文件(fs.readFileSync())并在请求正文中发送数据那么简单?

应该是什么标题。

如果这是几GB的非常大的文件呢?

有没有可能使用superagent(http://visionmedia.github.com/superagent)或有没有更好的库发送文件?

请给我一些关于这方面的信息。

谢谢!

app.get('/img/bg.png', function(req, res) { res.sendFile('public/img/background.png') }) 

http://expressjs.com/api.html#res.sendfile

使用“res.sendFile”。 “res.sendfile”已弃用。

我正在使用Rackspace Cloudfiles并希望将图像/video发送到远程存储器,但是我不确定它如何读取文件(fs.readFileSync())并在请求正文中发送数据这么简单?

一般来说你不应该使用fs.readFileSync 。 当您使用它或其他任何名为somethingSync方法时,将在整个调用期间阻塞整个服务器 。 在node.js程序中进行同步调用的唯一可接受的时间是在启动过程中。

应该是什么标题。

请参阅RackSpace Cloud Files API 。

有没有可能使用superagent(http://visionmedia.github.com/superagent)或有没有更好的库发送文件?

虽然我没有任何superagent的经验,我相信它会正常工作。 只要确保您阅读API文档,并根据其规范提出请求。

对于大文件,您将需要使用node.js将IOstreampipe道连接在一起的概念。 您希望打开本地文件进行读取,将HTTP请求启动到rackspace,然后将数据事件从文件读取进程传送到HTTP请求进程。

这里有一篇关于如何做到这一点的文章 。

Superagent对于小文件是适用的,但是由于superagent API会假设你的整个请求体在启动请求之前被加载到内存中,所以它不是大文件传输的最佳方法。

通常,您不需要担心请求标头,因为节点的HTTP请求库将为您发送适当的标头。 只要确保你使用了你的API需要的任何HTTP方法(可能是POST),并且它看起来像rackspace,你也需要在你的API令牌中添加X-Auth-Token额外的头文件。