curl:给下载的文件一个带有hapijs的动态名称

时间:2016-05-12 14:32:58

标签: curl hapijs

我有一个hapi js服务器,可以下载文件。

exports.register = function(server, options, next){
    server.route({
        method: 'GET',
        path: '/backup_balancer.zip',
        config: {
            auth: false,
            handler: function(request, reply) {
                let p = request.payload;

                let filename = 'testfilename';

                return reply.file(filePath, {
                    filename: filename
                });
            }
        }
    });
};

如果我像那样卷曲那条路线

curl -O http://localhost:8102/backup_balancer.zip
然后

curl保存名为backup_balancer.zip的文件。

现在我想命名我的路线只需下载并使用它:

curl -O http://localhost:8102/download

我怎么能说卷曲,后来浏览器将文件命名为我返回的文件名:

return reply.file(filePath, {
    filename: filename
});

提前谢谢。

更新1

我尝试了以下但没有成功。在路径的最后一部分之后调用该文件。任何有进一步提示的人? 我正在使用hapi 13.4.0

return reply.file(filePath).header('content-disposition', 'attachment; filename=testfile.zip;');

1 个答案:

答案 0 :(得分:1)

您需要指定模式以及文件名才能使用此功能;但我相信问题在于你期待卷曲的行为。请参阅curl man page:"用于保存的远程文件名是从给定的URL中提取的,没有别的。"如果你给它提供文件名和模式选项,那么hapijs代码(或惰性插件代码)将设置内容处理标题,但curl不会注意那些标题。 curl为您提供了一个选项,可以指定要在下载时保存的文件名,并在一天内调用它。