Как сохранить файл, отправленный с NodeJS с POST - PullRequest
0 голосов
/ 14 февраля 2019

Я создал следующую функцию для загрузки файла потока.Этот поток отправляется на адрес, указанный в POST.В пункте назначения у меня есть другая служба NodeJS, которая с помощью ExpressJS «перехватывает» этот POST, но я не знаю, как сохранить файл в месте назначения.

NodeJS на моем ПК:

function sendFileToRaspberry(filePath) {
    var options = {
        method: 'POST',
        url: 'http://x.x.x.x:8080/api/print',
        qs: {file: fs.createReadStream(filePath)},
        headers:
            {
                'cache-control': 'no-cache'
            }
    };

    request(options, function (error, response, body) {
        if (error) throw new Error(error);

        console.log(body);
    });
}

NodeJS на моей Raspberry:

app.post('/api/print', function (req, res) {

    ORIGINAL_IP = req.ip.replace("::ffff:", '');
    console.log("Received a print request from: " + ORIGINAL_IP);

    // Test history data for /api/printer API
    var file = req.query.file;
    console.log("Test data: " + file);
    util.inspect(file);

});

Но в журнале консоли я получаю:

Получен запрос на печать от: yyyy

Тестовые данные: [объект Объект]

Как сохранить этот файл на Rasp?

1 Ответ

0 голосов
/ 14 февраля 2019

Вы можете использовать вспомогательное программное обеспечение expressjs, например express-fileupload, multer .

Я думаю, вы используете Multipart Form Uploads для загрузки файла через http POST.

Клиентская сторона (Ваш ПК)

function sendFileToRaspberry(filePath) {
    var options = {
        method: 'POST',
        url: 'http://x.x.x.x:8080/api/print',
        formData: {
            file: fs.createReadStream(filePath)
        },
        headers: {
            'cache-control': 'no-cache'
        }
    };

    request(options, function (error, response, body) {
        if (error) throw new Error(error);

        console.log(body);
    });
}
...