2016-06-28 6 views
3

Мне нужно загрузить файл из моего приложения Electron в веб-приложение (node.js + Express), сначала собрав метаданные вместе с выбранным файлом (из HTML-кода формы в приложении Electron) и выдать запрос POST в веб-приложение. Веб-приложение обрабатывает этот запрос, сохраняя файл в предварительно настроенном месте на диске, а также метаданные и путь сохраненного файла к базе данных. Ссылаясь на SO, я решил использовать request и form-data составить запрос с данными формы и выдать запрос POST, используя код вида:Проблема с множественным POST-запросом от приложения Electron для загрузки файла

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 для достижения вышеописанных целей?

ответ

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') 
})