Используйте NodeJS для загрузки файла в вызов API
Я рассматриваю использование NodeJS для работы в качестве сервера для создания API.
В идеале я бы хотел, чтобы там была конечная точка API для отправки набора информации, а также файла, который можно сохранить в файловой системе.
Большинство примеров, которые я видел, предназначены для отправки файла через форму, однако я хотел бы сделать это через запрос на отправку.
Кто-нибудь знает, как я мог бы достичь этого (если это вообще возможно)?
В настоящий момент я хотел бы достичь следующего:
app.post('/Some/Endpoint/', controller.handleSomeEndpoint, function(request, response) {
response.send('Finished Request');
});
exports.handleSomeEndpoint = function(request, response, next) {
var bodyarr = []
request.on('data', function(chunk){
bodyarr.push(chunk);
})
request.on('end', function(){
console.log( bodyarr.join('') );
})
}
Но данные и конец никогда не вызываются, если я запускаю команду curl по строкам:
curl http://127.0.0.1:5000/Some/Endpoint/ -F '[email protected]_file'
Cheers,
Matt
Ответы
Ответ 1
Кажется, что ответ expressJS не использует тот же метод обработки почтового файла, что и http-модуль в nodejs.
Все, что было необходимо, включало каталог для файлов, которые нужно записать:
app.use(express.bodyParser({uploadDir:'./uploads'}));
Что я нашел здесь:
http://www.hacksparrow.com/handle-file-uploads-in-express-node-js.html
Ответ 2
Я предлагаю вам использовать Formidable, чтобы избежать загрузки анонимного файла.
Ответ 3
Ваш код должен работать нормально; это неправильное использование скручивания. Вместо этого попробуйте:
$ curl -X POST --data-binary @test_file http://localhost:8080