微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – 从Koa中的POST请求下载文件

我正在尝试使用koa-router从Koa中的POST请求处理程序触发下载.基本上,我正在尝试做这样的事情:

app.js

const Koa = require('koa')
const router = require('./router')

const app = new Koa()

app.use(router.routes())
app.use(router.allowedMethods())

app.listen(3000)

router.js

const fs = require('fs')
const Router = require('koa-router')

const router = new Router()

router.post('/generate',function * () {
  const path = `${__dirname}/test.txt`
  this.body = fs.createReadStream(path)
  this.set('Content-disposition','attachment; filename= test.txt')
})

module.exports = router

client.js

const { fetch } = window;

const request = {
  method: 'POST',body: JSON.stringify({ fake: 'data' })
}

// Make the POST request
fetch('/generate',request)

但是,发送POST请求时,没有任何反应.我也没有在服务器控制台或浏览器控制台中收到任何错误.任何帮助,将不胜感激!

解决方法

您可以尝试使用 https://github.com/koajs/send
router.post('/generate',function * (next) {
    yield send(this,'file.txt');
});

在客户端,您需要在通过邮件请求接收文件内容时创建并触发下载.将此代码放在请求回调中

fetch('/generate',request)
  .then(res => { return res.text() })
  .then(content => {

    uriContent = "data:application/octet-stream," + encodeURIComponent(content);

    newWindow = window.open(uriContent,'somefile');

  });

原文地址:https://www.jb51.cc/js/240811.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐