【发布时间】:2017-06-18 11:50:33
【问题描述】:
我有自己的REST API 可以调用以下载文件。 (最后,文件可以存储在不同类型的服务器中......亚马逊s3,本地等......)
要从 s3 获取文件,我应该使用这种方法:
var url = s3.getSignedUrl('getObject', params);
这会给我一个可下载的链接来打电话。
现在,我的问题是,当文件来自该链接时,如何使用自己的 rest API 下载文件?有没有办法重定向呼叫?
我将Hapi 用于我的REST 服务器。
{
method: "GET", path: "/downloadFile",
config: {auth: false},
handler: function (request, reply) {
// TODO
reply({})
}
},
【问题讨论】:
-
为什么需要链接然后调用该链接来下载文件,为什么不直接下载文件并返回流?
-
@peteb 这不会让一个请求下载 2 次文件吗?客户端将不得不等到文件从服务器下载,然后流给他?
-
如果您将流返回给请求者,则不会。这样想,您可以从 S3 获取包含该文件内容的流,然后您可以使用
pipe()将 S3 流直接通过管道返回给请求者。它永远不会下载到中介,中介只是介于两者之间。特别是如果您使用 AWS-SDK unbufferedStream。 -
如何为此设置 Hapi 请求?你有一个管道请求的例子吗?谢谢
-
我在 s3 javascript 中没有找到任何对无缓冲流的方法调用
标签: javascript rest amazon-web-services amazon-s3 hapijs