响应POST请求将文件下载到Express



我正在为我创建的桌面应用程序建立一个网站。该网站为用户提供了一种在通过Stripe付款后下载该应用程序的方式。为了在允许应用程序下载之前进行正确的验证,我试图通过下载文件来响应POST请求。我没有看到任何错误,但浏览器没有下载该文件。

Server.js

app.post('/pay', jsonParser, async (req, res) => {
// ...
// Stripe payment verification
// ...
if (intent.status === 'succeeded') {
console.log('downloading');
res.setHeader( "Content-Disposition", `attachment; filename=${path.join(__dirname, '..', 'app', 'test.txt')}` );
res.download(path.join(__dirname, '..', 'app', 'test.txt'), (error) => {
if (error) throw error;
});
}
}

Checkout.js

fetch(
'/pay',
{
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(data)
}
)
.then(handleServerResponse)

感谢评论中的@Lawrence Cherone,我将为stripe请求和下载创建一个新的流。

  1. Stripe完成服务器端,生成令牌,将用户/令牌/Stripe数据存储在数据库中
    • 将使用令牌向用户发送电子邮件
  2. 响应向客户端发送首次使用的令牌
  3. 客户端向/download/:令牌端点发出GET请求并开始下载

最新更新