3

本当に助けが必要です。

Nodejsは、enctype = "multipart / form-data"の場合、POSTリクエストを受信できません。ブラウザがハングするだけです。応答がなく、何も起こらず、タイムアウトします(後のファイルは、ハッシュ文字列の名前でサーバー上の指定されたフォルダにあります)。コードはローカルでテストされ、正常に機能します。

情報をリクエストする(Google Chromeネットワークタブから)

ヘッダー:Content-Type:multipart / form-data;

ペイロード:Content-Disposition:form-data; name="ファイル"; filename = "1_leaf_music.png"

応答:空

他のエンタイプ「application/x-www-form-urlencoded」を使用したPOSTリクエストは正常に機能しますが、「multipart/form-data」の場合にのみハングします。

Amazon ec2仮想サーバーにインストールすると、他のすべてが正常に機能します。

例>コールバックでハングする>app.post('/ form-file'、...>console.logはトレースしない

app.js:

var http    = require('http');
var express     = require('express');
var path    = require('path');
var app     = express();

app.configure(function(){
    app.set('views', __dirname + '/views');
    app.set('view engine', 'jade');
    app.use(express.favicon());
    app.use(express.bodyParser({uploadDir:__dirname + '/public/uploads'}));
    app.use(express.methodOverride());
    app.use(express.static(path.join(__dirname, 'public')));
});

app.get('/', function(req, res, next) {
    console.log('get:/');
    res.render('index', { title: 'Upload a single file (using Express BodyParser()) ' })
});

app.post('/form-file', function(req, res, next)  {
    console.log("multipart/form-data recived... file recived: ",req.files.file.name);
    res.send("multipart/form-data recived... file recived: " + req.files.file.name);
});

app.post('/form-text', function(req, res, next)  {
    console.log("application/x-www-form-urlencoded: txt: ",req.body.txt);
    res.send("application/x-www-form-urlencoded... txt: " + req.body.txt);
});

var port = 8001;
http.createServer(app).listen(port, function() {
    console.log("Express server listening on port " + port);
});

見る:

<code>
form(method="post", name="f", action="/form-file", enctype="multipart/form-data")
  fieldset
    legend Upload a File
    input(type="file", name="file")
  div.actions
    button.btn.primary(type="submit") Upload
    button.btn.cancel(type="button") Cancel
</code>

アマゾンサーバーでの同じコードライフ:http: //node.form.co.il :8001 /

更新: 問題はモジュールbodyParserにあります。削除された場合、ノードは期待どおりに応答を起動します。

4

0 に答える 0