8

我正在使用强大的包来上传文件。这是我的服务器端代码。

var formidable = require('formidable'),
    http = require('http'),
    util = require('util');
    app.post('/admin/uploads', function(req, res) {
         console.log(req.files, req.fields);//It prints
         var form = new formidable.IncomingForm(); 
         form.parse(req, function(err, fields, files) {
        console.log("Inside form parse.");//its not printing
        console.log(err, fields, files);//its not printing
         });
    form.on('file', function(name, file) {console.log('file='+file);});//its not printing
    form.on('error', function(err) { console.log(err); });//its not printing
    form.on('aborted', function() { console.log('Aborted'); });//its not printing
    console.log(form);//it prints


  });

上述代码中,form.parse()方法没有被调用,请给出解决方案。

4

5 回答 5

10

可能是您需要删除正文解析器

delete app.use(express.bodyParser());
于 2013-01-22T13:22:36.743 回答
5

将 Next.js API 路由与 Formidable 一起使用时,我遇到了同样的问题。就像接受的答案指出的那样,您必须删除正文解析器。在 Next.js 中,您可以导出config对象并禁用正文解析。

// /pages/api/form.js
import { IncomingForm } from "formidable";

export default function handler(req, res) {
  // formidable logic
}

// VV important VV
export const config = {
  api: {
    bodyParser: false,
  },
};
于 2021-08-30T18:28:00.307 回答
1

form.parse(...)在所有on(...)事件之后调用。

app.post('/admin/uploads', function(req, res) {
    var form = new formidable.IncomingForm(); 
    form.on('file', function(name, file) { });
    form.on('error', function(err) { });
    form.on('aborted', function() { });
    form.parse(req, function(err, fields, files) { });
});
于 2015-01-10T11:00:40.640 回答
1

请添加错误处理程序并发送错误消息,否则很难得到答案。

form.on('error', function(err) { console.log(err); });
form.on('aborted', function() { console.log('Aborted'); });

请参阅formidable文档:文档

于 2012-11-15T14:13:24.130 回答
1

我忘了将 enctype="multipart/form-data" 添加到我的 html 表单中,也许这会对某人有所帮助:)

于 2020-03-23T20:57:07.777 回答