使用 formidable 将文件上传到 koa-js 服务器

Uploading file to koa-js server with formidable

我正在尝试将文件从我的 Ionic 应用程序上传到基于 koa.js 的节点 js 服务器。对于使用 koa-body 和 formidable 解析正文。

这是我的服务器:

this.app.use(formidable());

this.app.use(koaBody({
  formidable:{
      uploadDir: __dirname + '/uploads', // directory where files will be uploaded
      keepExtensions: true, // keep file extension on upload
      multiples: true
  },
  multipart: true,
  urlencoded: true,
  formLimit: '5mb',
}));

this.app.use(_.post('/wish/photo/upload', async (ctx, next) => {
      //ctx.body = JSON.stringify(ctx.request);
      next();
    }));

这是我在前端的文件上传功能:

uploadFromPc(files, parameters){
    let headers = new Headers();
    let formData = new FormData();
    Array.from(files).forEach(file => formData.append('photo', file));
    let options = new RequestOptions({ headers: headers });
    //options.params = parameters;
    return this.http.post(EnvVariables.apiEndpoint + 'wish/photo/upload', formData, options)
             .subscribe(response => console.log(response))
}

一切正常,但没有创建文件,没有显示错误,什么都没有。

有什么想法吗?

一段时间后,我解决了文件上传问题。原点设置后我不得不运行强大的中间件。另外,我不得不将 koaBody 函数移动到 post 动作

router.post('/wish/photo/upload', koaBody({
  formidable: {
      uploadDir: __dirname + '/uploads', // directory where files will be uploaded
      keepExtensions: true, // keep file extension on upload
      multiples: true,
  },
  multipart: true,
  urlencoded: true,
  formLimit: '5mb',
}), (ctx, next) => {
  ctx.body = "Success";
});