我正在尝试使用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 举报,一经查实,本站将立刻删除。