2017-10-06 142 views
2

從網頁上,我發送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文件內容:

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

當我將文件加載到HTML表單和命中Stash the file!,在服務器I在控制檯得到這個消息:

{}

相反,我想獲取文件內容。如何僅獲取JSON文件字符串?

+0

你試過'$ .getJSON'嗎? –

+0

你的錯誤不是閱讀*文檔*關於'

'元素...你提供的'enctype'是無效的 - 閱讀所有關於它[這裏](https://developer.mozilla.org/en-US/ docs/Web/HTML/Element/form#attr-enctype)... TL; DR沒有'enctype'作爲'application/json'的' –

+0

我編輯了這篇文章。 – Hairi

回答

0

根據您的請求發送內容類型表單,同時使用body-parser.json(),它只在內容類型爲application/json的情況下在請求上設置正文字段。

要麼改變內容類型頭在youbrequest,或使用花呢體解析器

+0

你能告訴我如何改變html的內容類型嗎? – Hairi

0

我覺得這個問題是快件body-parser不能接受multipart/form-data內容類型,並首先解決(全文discusion)here和那麼我們有一個簡短的問題&答案here與答案。

你最終需要multer這就是你的代碼的樣子。

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

Goodluck!