nodejs/node-fetch POSTリクエストでファイルを添付する方法ファイル(.xlsまたはcsv)をインポートするAPIを呼び出したいとします。 Node-fetch/nodejを使用してこれを行うにはどうすればよいですか。リクエストノードフェッチまたはnodejsでファイルを送信する方法
4
A
答えて
8
README.md
は言う:
体のために使用されるネイティブのストリームは、要求と応答の両方で。
Stream
、Buffer
、Blob
のような
そしてsources indicate it supports several types、...と、また他のタイプのString
として強制しようとします。スニペット以下
3例を示す、V1.7.1または2.0.0-ALPHA5とすべての作業、(さらにFormData
とダウン他の例を参照):
let fetch = require('node-fetch');
let fs = require('fs');
const stats = fs.statSync("foo.txt");
const fileSizeInBytes = stats.size;
// You can pass any of the 3 objects below as body
let readStream = fs.createReadStream('foo.txt');
//var stringContent = fs.readFileSync('foo.txt', 'utf8');
//var bufferContent = fs.readFileSync('foo.txt');
fetch('http://httpbin.org/post', {
method: 'POST',
headers: {
"Content-length": fileSizeInBytes
},
body: readStream // Here, stringContent or bufferContent would also work
})
.then(function(res) {
return res.json();
}).then(function(json) {
console.log(json);
});
ここでは、foo.txt
ある:
hello world!
how do you do?
注:http://httpbin.org/post
は、送信されたリクエストの詳細を含むJSONで返信します。
結果:
{
"args": {},
"data": "hello world!\nhow do you do?\n",
"files": {},
"form": {},
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip,deflate",
"Connection": "close",
"Content-Length": "28",
"Host": "httpbin.org",
"User-Agent": "node-fetch/1.0 (+https://github.com/bitinn/node-fetch)"
},
"json": null,
"origin": "86.247.18.156",
"url": "http://httpbin.org/post"
}
あなたはより多くのパラメータを持つフォームの一部としてファイルを送信する必要がある場合は、あなたが試すことができます:
npm install form-data
- が(体として
FormData
オブジェクトを渡しますFormData
はStream
の種類で、CombinedStream
libraryを経由します) - do not pa (上記の例とは異なり)オプションでSS
header
、その後、この作品:(ちょうど送られるものを示す)
const formData = new FormData();
formData.append('file', fs.createReadStream('foo.txt'));
formData.append('blah', 42);
fetch('http://httpbin.org/post', {
method: 'POST',
body: formData
})
結果:
----------------------------802616704485543852140629
Content-Disposition: form-data; name="file"; filename="foo.txt"
Content-Type: text/plain
hello world!
how do you do?
----------------------------802616704485543852140629
Content-Disposition: form-data; name="blah"
42
----------------------------802616704485543852140629--
0
をこれは、その急行サーバーですローカルファイルを応答にストリームします。
var fs = require('fs');
var express = require('express')();
express.get('/',function(req,res){
var readStream = fs.createReadStream('./package.json');
readStream.pipe(res);
})
express.listen(2000);
0
ユーグ・M.の答えに追加する一つのことがあります。 FormData
のファイルアップロードはnode-fetch
でサポートされていません。代わりに、request
またはrequest-promise
などの他のライブラリを使用する必要があります。以下はrequest-promise
ライブラリを使用してファイルをアップロードするためのコードスニペットです。 resolveWithFullResponse
オプションを使用すると、生の応答が得られます。これがなければ、約束はただの返答の本文を返します。
let rp = require('request-promise')
var formData = {
file: fs.createReadStream('foo.txt'),
}
let options = {
uri:'http://httpbin.org/post',
formData: formData,
resolveWithFullResponse: true
}
rp.post(options).then((response) => {
// handle response here
})
関連する問題
- 1. NodeJSとexpress.routerでファイルを送信する方法は?
- 2. Nodejsで一度にTCPでファイルを送信する方法
- 3. nodejs、サーバー側からのみファイルを送受信する方法は?
- 4. 小さなnodejsチャットアプリで他の人にファイルを送信する方法
- 5. node.jsでファイルを送信する方法
- 6. クライアント(C)からサーバー(nodejs)にデータを送信する方法は?
- 7. nodejsで電子メールを送信する方法
- 8. nodejsのOutlook SDKでメールを送信する方法
- 9. getusermediaで記録されたストリームをサーバーnodejsにリアルタイムで送信する方法
- 10. NodejsがHTTP経由でファイルを送信しています
- 11. nodejsとmqttメッセージを1回または常に送信する
- 12. nodejsのソケットを使用してデータを送信する方法
- 13. 以前アップロードしたファイルをコントローラに送信する方法は?
- 14. nodejsで更新された値を送信するには?
- 15. ページをリロードせずにajaxでデータを送信する方法は? (Nodejs)
- 16. jqueryまたはjavascriptを使用してファイルを送受信する方法は?
- 17. perlでxmlレスポンスでファイルを送信する方法は?
- 18. httpプロキシでpngまたはjpgを送信する方法
- 19. SoapServer、NuSoap、またはZEND_SOAP_SERVERでRAW Soapを送信する方法
- 20. 画像はNodejsサーバに送信する
- 21. Ajaxファイルのアップロードで偽造トークンを送信する方法は?
- 22. Androidでファイル形式を送信する方法は?
- 23. nodejsの郵便配達員からファイルを送信する際、ファイルタイプの画像を検証する方法は?
- 24. テストのために.ipaファイルをクライアントに送信する方法
- 25. C#でbatファイルを開始したプロセスにキーを送信する方法は?
- 26. nodejsを使用して複数のユーザーにメールを送信する方法は?
- 27. NodeJSからSkype for Businessへの添付ファイルを送信する
- 28. NodeJSを使用してPOSTリクエストでJSONを送信する方法
- 29. activemq-cppステータスを送信または受信する方法を得るには
- 30. NodeJS - クライアントに変数を送信する
エンドポイントを作成し、ファイルを入力として受け入れ、[node-fetch](https://www.npmjs.com/package)を使用してnodejsサーバーに保存/処理したいとします。/node-fetch)? –
ここでは、nodejsサーバーは関係しません。彼らはnodejsプログラムの中から 'node-fetch'を使ってファイルをサービスにPOSTしたい(サービスは重要ではありません)(そのプログラムはその観点からhttpクライアントになります。それは無関係です)。 –