我一直在Node.js中搜索和测试各种模块/方法,目的是能够将文件上传到我的供应商API,并将响应数据(这是一个.png文件作为二进制数据发送)保存到图像文件。大多数示例演示了如何将文件上载到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:无法读取属性' hasOwnProperty'为null
我的HTML表单如下:
<form action="/upload4" method="post" enctype="multipart/form-data">
<input type="file" name="myfile" />
<input type="submit" value="Upload" />
</form>
这是我的节点/强大/请求代码:
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);
});
此时,我很高兴能够使用Node发布文件,最终目标是能够将响应(png文件)保存到Azure。