3

アップロードされたファイルを受け入れようとしていますが、 req.files を呼び出すたびに未定義と見なされます...何が間違っているのかわかりません...

これは私の app.js ファイルです:

var express = require('express')
    , user = require('./routes/user')
    , http = require('http')
    , path = require('path')
    , mongoose = require('mongoose')
    , mongoConnect = mongoose.connect('mongodb://localhost/clothing')
    , app = express();

// all environments
app.set('port', process.env.PORT || 3000);
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser({uploadDir: './public/img'}));
app.use(express.multipart());
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));

app.get('/user', user.user);
app.post('/user', user.userPost);

次に、ルートファイルで呼び出しています

req.files

クライアント側では、次のように呼び出しています。

form(action="/user", method="post")
        label name:
            input(type="text", name="name")
        label pic:
            input(type="file", name="picture", enctype="multipart/form-data")
        input(type="submit", value="Add New Clothes Item")
4

3 に答える 3

10

enctype="multipart/form-data"フォームに追加する必要があります

于 2013-11-13T17:06:56.553 に答える
1

express.bodyParser() を呼び出す代わりに、ここに記載されている代替案を検討してください: https://github.com/senchalabs/connect/wiki/Connect-3.0

私の場合、Connect はマルチパート ミドルウェアの互換性を削除するため、ノード サーバーを起動するたびに警告が表示されます。

connect.multipart() will be removed in connect 3.0
visit https://github.com/senchalabs/connect/wiki/Connect-3.0 for alternatives
connect.limit() will be removed in connect 3.0

connect-multiparty をテストしましたが、req.files は正常に初期化されています。https://github.com/andrewrk/connect-multiparty

于 2014-02-03T17:35:36.313 に答える