Как передать изображение в API с помощью NodeJS - PullRequest
0 голосов
/ 04 декабря 2018

У меня есть следующий пример кода, куда я хочу отправить изображение в API.

const axios = require('axios');
var image = 'some/image/url/example.png';

axios.post('some/api/url', {
    title: 'The quick brown fox',  
    image: image
}).then(function (response) {
    console.log(response);
}).catch(function (error) {
    console.log(error);
});

К сожалению, API не принимает растровые, двоичные, base64 или строковые изображения.Я хочу сделать это следующим образом: почтальон пример:

enter image description here

Возможно ли это в NodeJS ?Научи меня хозяину (ам)!Большое спасибо:)

1 Ответ

0 голосов
/ 04 декабря 2018

Вы можете использовать модуль запроса для простой публикации данных формы, например:

let request = require('request');
let fs = require("fs");

let url = "http://httpbin.org/post"; 
var fileName = process.argv[2] || 'test.png';

let formData = {
    upload_file: {
        value:  fs.readFileSync(fileName),
        options: {
            filename: fileName,
            contentType: 'image/png'
        }
    }
};

request.post({ url: url, formData: formData}, (err, httpResponse, body) => {
    if (err) {
        console.error("Upload failed: ", err);
    }
    console.log('Upload successful: response: ', body);
}); 

Если вы хотите написать простой сервер для получения файла, он будет выглядеть так:

const express = require('express');
const multer = require('multer');
const upload = multer();
const fs = require('fs');

var app = express();

app.set('port', 3000);

app.post('/post_image', upload.any(), (req, res) => {
    console.log('POST /post_image/');
    console.log('Headers: ', req.headers)
    fs.writeFileSync('uploaded_image.png', req.files[0].buffer);
    res.status(200).send('ok');
});

app.listen(app.get('port'));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...