Как загрузить изображение на конечную точку сервера узла, используя чистый javascript?

#javascript #node.js #image #upload

#javascript #node.js #изображение #загрузка

Вопрос:

Я пытаюсь создать небольшой сервис, который преобразует изображения из одного типа в другой. Я перейду к части преобразования позже, прямо сейчас я даже не могу отправить его на сервер узла должным образом.

у меня есть простой скрипт, который должен использовать файловую систему для чтения изображения, а затем отправлять его на конечную точку сервера узла.

Я не смог найти способ сделать это нигде в Интернете

я пробовал всевозможные способы и форматы, но на конечной точке req.body всегда является пустым объектом или просто ошибкой

 const fse = require('fs-extra');


var XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest;
var xhr = new XMLHttpRequest();





fse.readFile('testimg.png', function (err, data) {
    if (err) {
        throw err
    }
    console.log(data)
    xhr.open("POST", 'http://localhost:3000/convert', true); // true for asynchronous 

    xhr.setRequestHeader('Content-Type', 'application/upload');






    xhr.send(data)

})

and this is the server endpoint:

var express = require('express');
var router = express.Router();




router.get('/', (req,res)=>{
  res.send("hello")
})

router.post('/', async(req,res)=>{


  console.log(req.body);

  res.send("Hello i work")
})


module.exports = router;
  

Что я хочу, так это получить данные на конечной точке сервера и иметь возможность обработать их и преобразовать, например: загрузить jpg, преобразовать и отправить обратно в формате png или наоборот.

Помощь высоко ценится

Комментарии:

1. Может быть, это потому, что вы отправляете запрос на localhost: 3000 /convert , а в вашем маршрутизаторе нет /convert? Попробуйте изменить router.post(«/»…. в router.post(«/convert»….

2. О, спасибо за ответ, но это не то, я назвал его /convert в app.js итак, в маршрутизаторе это просто ‘/’

3. Если я не ошибаюсь, по умолчанию в объекте запроса нет свойства body. Не уверен, что это недавно изменилось, но вы можете использовать body-parser. Я не знаю, может ли это вам помочь, но вы можете взглянуть на: twilio.com/blog/2017/08/http-requests-in-node-js.html

4. Кстати, я предполагаю, что вы используете разные приложения NodeJS, и вы сначала запускаете свой сервер, а затем отправляете запрос правильно?

5. Я изучаю это прямо сейчас, обновлю, если это решит, спасибо