如何在node.js / express上发送文件。
我正在使用Rackspace Cloudfiles并希望将图像/视频发送到他们的远程存储,但我不确定它是否像读取文件(fs.readFileSync())一样简单并在请求正文中发送数据,或者是?
标题应该是什么。
如果它是几个GB上的一个非常大的文件怎么办?
是否可以使用superagent(http://visionmedia.github.com/superagent)或者是否有更好的文件库来发送文件?
请告诉我一些有关此事的信息。
谢谢!
答案 0 :(得分:50)
app.get('/img/bg.png', function(req, res) {
res.sendFile('public/img/background.png')
})
https://expressjs.com/en/api.html#res.sendFile
使用“res.sendFile”。 “res.sendfile”已弃用。
答案 1 :(得分:6)
对于大型文件,您将需要使用node.js将IO流连接在一起的概念。您想要打开本地文件进行读取,启动机架空间的HTTP请求,然后将数据事件从文件读取过程传输到HTTP请求过程。
Here's an article on how to do this
Superagent适用于小文件,但由于superagent API假定您的整个请求主体在启动请求之前已加载到内存中,因此它不是大文件传输的最佳方法。
通常,您不需要特别担心请求标头,因为节点的HTTP请求库将为您发送适当的标头。只需确保您使用API所需的任何HTTP方法(可能是POST),看起来对于rackspace,您还需要在API令牌中添加X-Auth-Token
额外标头。
答案 2 :(得分:4)
我正在使用Rackspace Cloudfiles并希望将图像/视频发送到他们的远程存储,但我不确定它是否像读取文件(fs.readFileSync())一样简单并在请求正文中发送数据,或者是?
您通常永远不会使用fs.readFileSync
。当您使用它或任何其他名为somethingSync
的方法时,您会在该通话期间阻止整个服务器。 仅在node.js程序中进行同步调用的可接受时间是在启动期间。
标题应该是什么。
是否可以使用superagent(http://visionmedia.github.com/superagent)或者是否有更好的文件库来发送文件?
虽然我对superagent没有任何经验,但我相信它会正常工作。只需确保您阅读API文档并根据其规范提出请求。