koa-body 怎么获取到前端页面文件上传的信息?

发布于 2022-09-07 22:18:04 字数 1125 浏览 17 评论 0

先简单描述一下项目吧

  • view层 angualr.js 6.x版本的spa应用
  • angular会直接调用node的api接口,由node去调用服务,进行增删改查的操作
  • node版本 8.11.x 主要使用了koa2框架和koa-body(^4.0.4),koa-router(^7.1.1)作为请求解析

需求如下

  • 现在有一个文件上传需求,但是node仅仅作为转发,并不实际保存文件,而是调用服务api进行操作
// angular 部分代码
let formData:FormData = new FormData();
    formData.append('file',this.fileData);  // this.file为从input file 获取到的文件信息
    formData.append('name','张三');
    this.http.upload('assets/upload/add',formData, (data) => {
      console.log(data)
    }, (error) => {

    });
// node端部分代码
const koaBody = require('koa-body');    
app.use(koaBody(
    multipart: true,
    formidable: {
      maxFileSize: 200 * 1024 * 1024 // 设置上传文件大小最大限制,默认2M
    }
));

router.post('/upload/add', async (ctx, next) => {
  console.log(ctx.request.files);  // undefined
  console.log(ctx.request.body);   // {}
  ctx.body = JSON.stringify(ctx.request.files); // 空
});

前台页面设置请求头 'Content-Type': 'multipart/form-data;' 正常发送数据,一切正常。
我现在想在node端不存储任何文件的话,通过调用服务端api将文件上传到服务器,但是ctx.request.files并没有任何的数据。 要是由其他的办法也可以分享一下

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

甜扑 2022-09-14 22:18:04

如果是koabody的4的版本
const file = ctx.request.files.file; // 获取上传文件

如果是koabody的3的版本
const file = ctx.request.file; // 获取上传文件

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文