ファイルをベンダー API にアップロードし、応答データ (バイナリ データとして送信される .png ファイル) を画像ファイルに保存できるようにすることを目標に、Node.js でさまざまなモジュール/メソッドを検索してテストしてきました。ほとんどの例は、ファイルを Web ディレクトリにアップロードする方法を示していますが、Web サービスにはアップロードしていません。Formidable ( https://github.com/felixge/node-formidable ) は、Web ディレクトリに簡単に保存できる例ですが、フォーム データを Web サービスに簡単にポストする方法がわかりません。 .
リクエスト(https://github.com/request/request)を使用してファイルを投稿することを検討しましたが、具体的にはフォームの例に何を入れるかについて混乱しています:
// Pass a simple key-value pair
my_field: 'my_value',
私の現在の試みは、恐るべきものと要求を組み合わせて使用 していますが、次のエラーで失敗します:
TypeError: null のプロパティ 'hasOwnProperty' を読み取れません
私のHTMLフォームは次のとおりです。
<form action="/upload4" method="post" enctype="multipart/form-data">
<input type="file" name="myfile" />
<input type="submit" value="Upload" />
</form>
ここに私のNode/Formidable/Requestコードがあります:
app.post('/upload4', function (req, res) {
var form = new formidable.IncomingForm();
form.parse(req, function (err, fields, files) {
var options = {
contentType: files.myfile.type,
metadata: { fileName: files.myfile.name }
};
request.post({ url: 'http://myendpoint.net/uploadPDF', formData: form }, function optionalCallback(err, httpResponse, body) {
if (err) {
return console.error('upload failed:', err);
}
console.log('Upload successful! Server responded with:', body);
var options = { contentType: 'image/png' };
blobSvc.createBlockBlobFromText(containerName, 'Reponse.png', body, options, function (error, result, response) {
if (!error) {
// Response from POST was uploaded to Azure as a PNG file
res.send(result);
} else {
console.log(error);
}
});
});
console.log(req);
});
この時点で、(png ファイルの) 応答を Azure に保存できるという最終目標を持って、Node.js を使用してファイルを POST できれば満足です。