Загрузка изображения из клиента Android на сервер Node.js

Я хочу загрузить изображение с устройства Android на сервер узла. В настоящее время я конвертирую изображение в строку Base64 и передаю ее с помощью AsyncTask. Я не понимаю, что происходит на стороне сервера. Когда я записываю тело запроса в консоль, он отображает undefined.

Это код Android для преобразования изображения в строку Base64 и загрузки на сервер узла:

Загрузка изображения из клиента Android на сервер Node.js

Это вывод консоли после получения данных изображения:

Загрузка изображения из клиента Android на сервер Node.js

Это код сервера:

Загрузка изображения из клиента Android на сервер Node.js

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

Поделитесь затронутым кодом на стороне сервера. Снимок экрана командной строки, которым вы поделились, совершенно бесполезен

Hemadri Dasari 13.10.2018 08:21

Не в комментарии, который ставится под сомнение, код входного файла также может быть файлом index.js

Hemadri Dasari 13.10.2018 08:25

Вам необходимо настроить конфигурацию body-parsor, чтобы получить req.body

Hemadri Dasari 13.10.2018 08:25

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

Hemadri Dasari 13.10.2018 08:27

Спасибо за ваш запрос. Я сделал, как вы просили.

maverick_devil 13.10.2018 08:37
0
5
624
1

Ответы 1

Вам необходимо установить модуль body-parser

Установить

 npm i -s body-parser

потом

Установите конфигурацию ниже перед маршрутом app.post

  // support parsing of application/json type post data
  app.use(bodyParser.json());

  //support parsing of application/x-www-form-urlencoded post 
   app.use(bodyParser.urlencoded({
      parameterLimit: 100000,
      limit: '150mb',
      extended: true
   }));

Похоже, полезная нагрузка вашего запроса превышает 50 МБ, поэтому вам нужно знать, какой размер вы отправляете из пользовательского интерфейса, и соответствующим образом изменить лимит в бэкэнде. Скажем, если вы отправляете файл размером 100 МБ из Ui, измените лимит как минимум на 150 МБ, как это

Hemadri Dasari 13.10.2018 09:16

Для указанного ниже кода будут получены данные. Но полученные данные не совпадают с данными, отправленными с устройства Android. Я думаю, что добавляются некоторые дополнительные данные. app.use (bodyParser.json ({предел: "3 МБ"})); app.use (bodyParser.urlencoded ({parameterLimit: 10000, extended: true})) app.post ('/ upload', function (req, resp) {console.info (req.body);});

maverick_devil 13.10.2018 09:26

Я не уверен в том, как работает Android, но с внутренней стороны именно так вам нужно с этим бороться. У вас нет доступа к необходимым данным с помощью req.body?

Hemadri Dasari 13.10.2018 09:32

Для упомянутого выше кода я вижу данные. Но дело в том, что после фактических данных добавляется некоторый дополнительный контент. И я не могу понять, как избежать добавления этого дополнительного контента.

maverick_devil 13.10.2018 09:39

Хорошо, не уверен в этом, но я подозреваю, что код Android вносит эту модификацию.

Hemadri Dasari 13.10.2018 09:41

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

Hemadri Dasari 13.10.2018 09:44

@HarshalChavan Можете ли вы сказать, решило ли мое решение вашу проблему или нет?

Hemadri Dasari 14.10.2018 13:35

Другие вопросы по теме