curl:使用 hapijs 给下载的文件一个动态名称
curl: give downloaded file a dynamic name with 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
我怎么能说 curl 和后来的浏览器来命名文件就像文件名我 return in:
return reply.file(filePath, {
filename: filename
});
提前致谢。
更新 1
我尝试了以下但没有成功。该文件在路线的最后一部分之后被调用。有人有进一步的提示吗?
我正在使用 hapi 13.4.0
return reply.file(filePath).header('content-disposition', 'attachment; filename=testfile.zip;');
您需要指定模式和文件名才能正常工作;但我相信问题出在您对 curl 的期望行为上。请参阅 curl man page:"The remote file name to use for saving is extracted from the given URL, nothing else." 如果您同时提供文件名和模式选项,hapijs 代码(或惰性插件代码)将设置 content-disposition headers,但 curl 不会支付关注那些 headers。 curl 为您提供了一个选项来指定要在下载时保存的文件名,然后就此结束。
我有一个 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
我怎么能说 curl 和后来的浏览器来命名文件就像文件名我 return in:
return reply.file(filePath, {
filename: filename
});
提前致谢。
更新 1
我尝试了以下但没有成功。该文件在路线的最后一部分之后被调用。有人有进一步的提示吗? 我正在使用 hapi 13.4.0
return reply.file(filePath).header('content-disposition', 'attachment; filename=testfile.zip;');
您需要指定模式和文件名才能正常工作;但我相信问题出在您对 curl 的期望行为上。请参阅 curl man page:"The remote file name to use for saving is extracted from the given URL, nothing else." 如果您同时提供文件名和模式选项,hapijs 代码(或惰性插件代码)将设置 content-disposition headers,但 curl 不会支付关注那些 headers。 curl 为您提供了一个选项来指定要在下载时保存的文件名,然后就此结束。