2016-11-02 15 views
3

私は実際にファイルのアップロードといくつかのデータを持つAngular webformを開発しています。ここ は、リクエストヘッダです:BodyParser:予期しないトークン -

var formData = new FormData(); 
formData.append('file', $scope.test.file); 
$http({ 
    method: 'POST', 
    url: backUrl + '/tests/add', 
    data: { 'file': $scope.file, 
      'token': 'test'}, 
    contentType: false, 
    processData: false, 
    transformRequest: function (data, headersGetter) { 
     var formData = new FormData(); 
     angular.forEach(data, function (value, key) { 
      formData.append(key, value); 
     }); 
     var headers = headersGetter(); 
     delete headers['Content-Type']; 
     return formData; 
    } 

しかし、それは常にこのエラーと400不正な要求を返す:

POST /tests/add HTTP/1.1 
Host: localhost:3000 
Accept: application/json, text/plain, */* 
Accept-Encoding: gzip, deflate 
Content-Type: application/json;charset=utf-8 
Referer: http://localhost:8000/ 
Content-Length: 2033 

私は要求をこのように構築

Unexpected token - 
400 

SyntaxError: Unexpected token - 
    at parse (/home/me/projects/www/node_modules/body-parser/lib/types/json.js:83:15) 
    at /home/me/projects/www/node_modules/body-parser/lib/read.js:116:18 
    at invokeCallback (/home/me/projects/www/node_modules/raw-body/index.js:262:16) 
    at done (/home/me/projects/www/node_modules/raw-body/index.js:251:7) 
    at IncomingMessage.onEnd (/home/me/projects/www/node_modules/raw-body/index.js:307:7) 
    at emitNone (events.js:86:13) 
    at IncomingMessage.emit (events.js:185:7) 
    at endReadableNT (_stream_readable.js:974:12) 
    at _combinedTickCallback (internal/process/next_tick.js:74:11) 
    at process._tickCallback (internal/process/next_tick.js:98:9) 

これは、私のバックエンドにあるbodyParserへの参照のみ:

私は間違って何をしていますか?

答えて

4

あなたはJSONを送信していますか?

おそらくbodyParser.json()でエラーが発生する無効なJSONを使用している可能性があります。

有効なJSONを使用していることを確認してください。また、bodyParser.jsonとbodyParser.rawをミドルウェア用に交換することもできます。

+0

私は、あなたが尋ねているwjatファイルのJSONファイルを送信していません。 – Papotitu

+0

これで、.jsonから.rawにスワップしました。もうエラーは発生しません。しかし、req.bodyは今は常に空ですので、bodyparser.rawの後にどうやってリクエストparamにアクセスすればいいですか? – Papotitu

+0

申し訳ありませんが、あなたが送信していることを確認できるように使用するように言っていました。ヘッダーと本文で実際に送信している内容を確認して、JSONを適切に送信していることを確認することをおすすめします。しかしここにbodyparser.rawのgoogのリンクがあります:http://stackoverflow.com/questions/18710225/node-js-get-raw-request-body-using-express – defaultcheckbox

関連する問題