node.jsにcURLコマンドをコピーしようとしています。コマンドは次のとおりです。node.jsに関してcURL '-F' paramとは何か
curl https://search.craftar.net/v1/search -F "token=xxx" -F "[email protected]"
これは問題ありませんが、これはnode.jsにどのように変換されますか?リクエストライブラリを使用して:
request({
url: 'https://search.craftar.net/v1/search',
method: 'POST',
form: {token: 'xxx', image: binaryBodyOfPrevRequest},
headers: {'Content-Type': 'multipart/form-data'}
}, function(err, res, body) {
console.log(body) // prints out: {"error": {"message": "Reference image is required", "code": "IMAGE_MISSING"}}
});
私のトークンは認識されているようですが、画像はありません。何故ですか?
私はFacebook API - What is " curl -F "?を見ました。それはフォームであることがわかります。しかし、私は、HTMLフォームとマルチパート/フォームデータのアイデアをどうやって比較するのか、フォームがデータ送信に関してどのようなものかを知りません。
こんにちは、返信ありがとうございます。正確な使用例は、私がCouchDBから画像を取得してから送信することです。だから、私はバイナリデータとして 'body'にファイルを持っています。それをやり直すのではなく、代わりにファイルにパイプするのがよいと言っていますか?どの時点でfs.createReadStreamを使用してコンテンツを取得できますか? –
私は、いくつかのcouchdbドライバがストリーミング添付ファイルをサポートしていると信じています(例:['cradle'](https://github.com/flatiron/cradle#streaming-2))。また、添付ファイルを直接ダウンロードするには、[/{db}/{docid}/{attachmentName}](http://docs.couchdb.org/en/stable/api/document/attachments.html)のHTTP要求を直接行うこともできます#get-db-docid-attname)、 'image'値にHTTPレスポンスストリームを使用します。 – mscdex
もう一度ありがとうございます。 "またはあなたが他の種類のストリームを介して画像を取得できるかどうか"。私はすでに/ {db}/{docid}/{attName}にリクエストを行い、レスポンス本体にバイナリストリームによる添付を受け取りました。 "var request = require( 'request').defaults({encoding:null});"を使用すると、コンテンツタイプがimage/jpegの添付ファイルとして本文をCouchDBに直接送り返すことができました。しかし、私はそれがフォームを必要とするので、同じ身体を職人に送ることができませんでした。リクエストのリターン本体からストリームを作成するにはどうすればよいですか? –