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への参照のみ:
私は間違って何をしていますか?
私は、あなたが尋ねているwjatファイルのJSONファイルを送信していません。 – Papotitu
これで、.jsonから.rawにスワップしました。もうエラーは発生しません。しかし、req.bodyは今は常に空ですので、bodyparser.rawの後にどうやってリクエストparamにアクセスすればいいですか? – Papotitu
申し訳ありませんが、あなたが送信していることを確認できるように使用するように言っていました。ヘッダーと本文で実際に送信している内容を確認して、JSONを適切に送信していることを確認することをおすすめします。しかしここにbodyparser.rawのgoogのリンクがあります:http://stackoverflow.com/questions/18710225/node-js-get-raw-request-body-using-express – defaultcheckbox