2017-10-06 17 views
2

WebページからJSONファイルをnodeJSサーバーに送信します。サーバー側でそのJSONファイルをオブジェクトに割り当ててコンソールに出力したいと考えています。私はインターネットでたくさんのことを読んで多くを試しましたが、私は助けを求めることにしました。JSON投稿データからオブジェクトを抽出する

index.htmlファイル:

<form action="/" enctype="multipart/form-data" method="post" name="fileinfo"> 
 
    <label>File to stash:</label> 
 
    <input type="file" name="file" required /> 
 
    <input type="submit" value="Stash the file!" /> 
 
</form> 
 
</script>

トラフ私は有効なJSONファイルを送るこのファイルここ

は、私はこれを試してみましたものです。ここで

は、サーバー側のコードです:

var http = require("http") 
var express = require("express") 
var url = require("url") 
var fs = require("fs") 

var bodyParser = require('body-parser'); 
var app = express(); 

app.use(bodyParser.urlencoded()); 
app.use(bodyParser.json()); 

app.get('/', function(req, res) { 
    res.sendFile(__dirname + '/index.html'); 
}); 

app.post('/', function(request, response){ 
    console.log(request.body);  // your JSON 
}); 

app.listen(80); 
console.log('Server is listening ... ') 

そして、ここでJSONファイルの内容です:私は、HTMLフォームにファイルをロードし、Stash the file!を押すと、サーバーのIで、

{ 
    "head":{ 
     "person":{ 
      "first name": "Radoslav", 
      "second name": "Krasinirov", 
      "last-name": "Marinov" 
     } 
    } 
} 

コンソールでこのメッセージを受け取る:

{}

代わりにファイルの内容を取得したいと思います。 JSONファイルの文字列を取得するにはどうすればいいですか?

+0

あなたは '$ .getJSON'を試しましたか? –

+0

あなたの間違いは '

'要素についての*ドキュメント*を読んでいませんあなたが提供している 'enctype'は有効ではありません - それに関するすべてを読む[ここ](https://developer.mozilla.org/en-US/) doc/Web/HTML/Element/form#attr-enctype)... TL; DR ''の 'application/json'のような' enctype'はありません –

+0

私はそれに応じて投稿を編集しました。 – Hairi

答えて

0

あなたの要求に応じてコンテンツタイプフォームを送信していますが、コンテンツタイプがapplication/jsonの場合にのみ、要求に本体フィールドを設定するbody-parser.json()を使用しています。

いずれ私はこの問題は明示body-parsermultipart/form-dataコンテンツタイプを受け入れることができないとされ、第一(完全ディスカッションで)アドレス指定されたと思うyoubrequestのコンテンツタイプヘッダを変更し、または合っボディパーサー

+0

HTMLからコンテンツタイプを変更する方法を教えてください。 – Hairi

0

を使用hereと私たちは短い質問&と答えはhereです。

最終的にはmulterが必要です。これはコードの外観です。

var multer = require('multer')().single(); 
app.use(multer); 

Goodluck!

関連する問題