Подтвердить что ты не робот

Используйте 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

4b9b3361

Ответ 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