私のプロジェクトの1つをrequest
からもう少し軽量(get、axios、またはfetchなど)に切り替える予定です。すべてがスムーズに進行していますが、ファイルストリーム(PUT
とPOST
)をアップロードしようとすると問題が発生します。リクエストパッケージでうまく動作しますが、他の3つのいずれかがサーバから500を返します。ノードHTTP経由のJSアップロードファイルストリーム
私は、一般的に500とはサーバーの終わりに問題があることを知っていますが、テストしているHTTPパッケージとのみ一致しています。 request
を使用するようにコードを戻すと、正常に動作します。ここで
は私の現在のリクエストコードです:私は「GOTのマニュアルに従って
got.put(`http://endpoint.com`, {
headers: {
'Content-Type': 'multipart/form-data',
Authorization: `Bearer ${account.token.access_token}`,
},
body: {
content: fs.createReadStream(localPath)
}
})
.then(response => {
return callback(null, response.body);
})
.catch(err => {
return callback(err);
});
、:
Request.put(`http://endpoint.com`, {
headers: {
Authorization: `Bearer ${account.token.access_token}`
},
formData: {
content: fs.createReadStream(localPath)
}
}, (err, response, body) => {
if (err) {
return callback(err);
}
return callback(null, body);
});
そして、ここでは別のパッケージを(この場合には、得た)を使用しての試みの一つでありますまた、form-data
パッケージをその例に従って使用してみましたが、私は同じ問題を抱えています。
これらの2つの間で収集できる唯一の違いはgot
です。手動でContent-Type
ヘッダーを指定する必要があります。そうしないと、エンドポイントで適切なエラーが表示されます。そうでなければ、2つのパッケージがどのようにストリームを使ってボディを構築しているのかよく分かりませんが、fetch
とaxios
は同じエラーをgot
としています。
fetch
またはaxios
を使用してスニペットを使用したい場合は、私も同様に投稿してください。
もしそれが役立つかどうかわかりませんが、入手したドキュメントによると、オブジェクトの本体としてFormDataを渡す必要があります - https://github.com/sindresorhus/got#form-data –
私もこれを試しました。 'form-data'パッケージを使って、' content 'とストリーム情報で 'append'を呼び出しましたが、私はまだ同じ問題を抱えています。私はこれを反映するために私の質問を編集します。 –