我一直在搜索和测试 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:无法读取 null 的属性“hasOwnProperty”
我的 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。