2017-05-17 3 views
1

をnodejsするカール-F要求を変換:私はカールと、このラインを持っており、それがうまく働いて要求

curl -X POST -F [email protected]_of_document_with_json_inside.txt http://some_url/json/name?signature=bd87b1e4b679092a6946de0c6f623567 

私は

私の現在のコードはこれを変更し、nodejsと私のJSONドキュメントを投稿したいです:

:カールヘルプから

var request = require('request'); 
var postData = { id: "12345", title: "Some title", url: "some-url" }; 
var clientServerOptions = { 
    uri: 'http://some_url/json/name?signature=bd87b1e4b679092a6946de0c6f623567', 
    body: postData, 
    json: true, 
    method: 'POST', 
    headers: { 
    'Content-Type': 'application/json' 
    } 
} 

request(clientServerOptions, function (error, response) { 
    console.log(error,response.body); 
    return; 
}); 

は、私は-Fフォーム用であり、私のカールで、私は、フィールド文書掲示されるコマンドを持っていました

-F/--form <name=content> Specify HTTP multipart POST data (H) 

ドキュメントフィールドを指定してjsonデータを投稿する方法を教えてもらえますか?


更新:

POSTDATAは含まれています

{ id: "12345", title: "Some title", url: "some-url" } 

これはname_of_document_with_json_inside.txt

にあるデータである私は、私はそれをテキストエリアを掲示ような何かをする必要があると言われました名前=ドキュメント:

<textarea name="document">JSON BLA BLA BLA</textarea> 

だからドキュメント=を指定する方法は?

+0

ファイルをアップロードしようとしていますか? –

+0

また、VaRのclientServerOptionsの= { 'と試みる方法: 'POST'、 URL: 'のhttp:// some_url/JSON /名'、 QS:{署名: 'bd87b1e4b679092a6946de0c6f623567'}、 ヘッダー:{ 'コンテンツタイプ' : 'multipart/form-data;' }、 formData:{document: 'name_of_document_with_json_inside.txt'} }; '。 [このリンク](https://github.com/request/request#forms)もチェックしてください。 –

+0

私はjson string {id: "12345"、title: "Some title"、url: "some-url"}を送信します。これは.txtファイルにあります。名前文書。私は何かのように名前=文書とjson文字列のテキストを投稿する –

答えて

0

この投稿は、私を助け:http://stackoverflow.com/questions/19818918/nodejs-sending-uploading-a-local-file-to-a-remote-server

var POST_DATA = 'data={['がに変更されました:私もここで

をファイルに書き込み、ポストPOSTDATA JSONコードする必要がdodn't var POST_DATA = 'document={['

完全に動作するコードは次のとおりです。

var http = require('http'); 
var postData = { id: "12345", title: "Some title", url: "some-url" }; 
var post_options = { 
    //host: 'logger.mysite.co.uk', 
    host: 'some_url', 
    path: '/json/name?signature=bd87b1e4b679092a6946de0c6f623567', 
    port: 80, 
    timeout: 120000, 
    method: 'POST', 
} 

var sender = http.request(post_options, function(res) { 
    if (res.statusCode < 399) { 
     var text = "" 
     res.on('data', function(chunk) { 
      text += chunk 
     }) 
     res.on('end', function(data) { 
      console.log(text); 
     }) 
    } else { 
     console.log("ERROR", res.statusCode) 
    } 
}); 

var POST_DATA = 'document=' 
POST_DATA += postData 
POST_DATA += '' 
sender.write(POST_DATA); 
sender.end(); 
関連する問題