Загрузка файла на сервер nodeJS - PullRequest
0 голосов
/ 02 апреля 2020

Код клиента:

var data = new FormData();
data.append(fileName, blob, 'test.html');

fetch('http://localhost:3000/', { 
method: 'POST',
    headers: {
    },
    body: data 
}).then(
    response => {
        console.log(response)
    }
).then(
    success => {
        console.log(success)
    }
).catch(
    error =>  {
        console.log(error)
    }
);

Код сервера:

router.post('/', urlencodedParser, function(req, res, next) {
  const body = req.body;
  console.log(body);
  res.send(`You sent: ${body} to Express`);
});

Я отправляю большой двоичный объект в теле почтового запроса. Когда я отправляю его на сервер, я хочу, чтобы сервер загрузил файл из тела запроса. Как я могу скачать этот файл? Или есть более простой способ загрузки с клиента?

Ответы [ 3 ]

1 голос
/ 02 апреля 2020

Если вы можете использовать пакет NPM formidable, возможно, есть решение по адресу: https://www.w3schools.com/nodejs/nodejs_uploadfiles.asp

Как только вы получите файл, вы можете использовать fs модуль для сохранения и хранения на сервере

0 голосов
/ 03 апреля 2020

Это решило мой ответ - https://attacomsian.com/blog/uploading-files-nodejs-express, который в основном использует промежуточное программное обеспечение для загрузки.

Это было в основном как:

const x = 6;
console.log(x);
Error: value is f'd up

const x = 6;
magic.valueParse(x);
console.log(x);
6

Также, Я хотел бы указать, как bodyParser не может быть использован для составных данных. Это упоминается в официальных документах, но даже ответы, которые я получаю, указывают на bodyParser. Поэтому я решил повторить это.

0 голосов
/ 02 апреля 2020

Пусть это может решить вашу проблему.

const fs = require('fs');
let directory = '/temp/data'; // where you want to save data file

router.post('/', urlencodedParser, function(req, res, next) {
 const body = req.body;
 console.log(body);
 fs.writeFile(directory, body, function(err) {
  if(err) {
   return console.log(err);
  }
  console.log("File has been saved");
 });
 res.send(`You sent: ${body} to Express`);
});
...