本当に助けが必要です。
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にあります。削除された場合、ノードは期待どおりに応答を起動します。