从Electron app发出多部分POST请求以进行文件上传

时间:2016-06-28 22:57:34

标签: node.js file-upload electron form-data npm-request

我需要将我的Electron应用程序中的文件上传到Web应用程序(node.js + Express),首先收集元数据和所选文件(来自Electron应用程序中的HTML表单)并发出POST请求Web应用程序。 Web应用程序通过将文件保存到磁盘上的预配置位置以及元数据和保存文件到数据库的路径来处理此请求。参考SO,我决定使用requestform-data使用表单数据组合请求并发出POST请求,使用如下代码:

var fs = require('fs');
var request = require('request');
var FormData = require('form-data');

let formData = {
    'name': imageName,
    'mediaType': mediaType,
    'extension': extension,
    'resolution.x': resolutionX,
    'resolution.y': resolutionY,
    'url': url,
    'file': fs.createReadStream(absFilePath)
  };

  request.post({
    url: 'http://localhost:8080/images',
    formData: formData
  }, function(err, response, body) {
    if (err) {
      return console.error('upload failed:', err);
    }
    console.log('Server responded with:', response);
  });

在Electron应用程序中,控制台显示服务器响应:[IncomingMessage],响应状态代码为500.这非常令人困惑,我无法掌握两个项目的Github页面中的示例。如何发出POST请求以实现上述目标?

1 个答案:

答案 0 :(得分:0)

npm install -S request eyespect

var inspect = require('eyespect').inspector();
var request = require('request')

var postData = {
  name: 'test',
  value: 'test'
}

var url = 'https://www.example.com'
var options = {
  method: 'post',
  body: postData,
  json: true,
  url: url
}
request(options, function (err, res, body) {
  if (err) {
    inspect(err, 'error posting json')
    return
  }
  var headers = res.headers
  var statusCode = res.statusCode
  inspect(headers, 'headers')
  inspect(statusCode, 'statusCode')
  inspect(body, 'body')
})