账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    koa-body 怎么获取到前端页面文件上传的信息?
    61
    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并没有任何的数据。 要是由其他的办法也可以分享一下

    1
    打赏
    收藏
    点击回答
        全部回答
    • 0
    更多回答
    网站公告
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部