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

Formidable で Next.js API ルートを使用すると、同じ問題が発生しました。受け入れられた回答が指摘しているように、ボディパーサーを削除する必要があります。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.on('error', function(err) { console.log(err); });
form.on('aborted', function() { console.log('Aborted'); });

ドキュメントを参照してくださいformidabledoc

于 2012-11-15T14:13:24.130 に答える
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 に答える