Angular 6 загрузка файла - PullRequest
0 голосов
/ 25 июня 2018

Я застрял на этом некоторое время.У меня есть приложение со средним стеком, использующее Angular 6. Я пытаюсь загрузить файл сохранения в свой бэкэнд.Я нашел ЭТУ статью.Но либо я получаю сообщение об ошибке, что-то вроде

<code><!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> 
<title>Error</title> </head> <body> <pre>Error: ENOENT: no such file or 
 directory, open ''<br> at 
 Error (native)

, возвращенное с сервера, или файл req.file пуст, и мое сохранение не происходит.Я пытаюсь собрать воедино лучший способ сделать это.

Спасибо

вот моя конечная точка

app.post('/api/posts', upload.single('file'), (req, res, next) => {

const post = new Post({
  title: req.body.title,
  content: req.body.content,
  image:req.file
});    

post
.save()
.then(createdPost => {
  res.status(201).json({
    status: true,
    id: createdPost._id,
  });
})
.catch(error => {
  res.status(500).json({ status: false, message: 'Didnt save ', error });
});

});

А вот как настроить мультитер, поток файлов сетки и хранилище

    let gfs;
conn.once('open', () => {
  gfs = Grid(conn.db, mongoose.mongo);
  gfs.collection('uploads');
});


const storage = new GridFsStorage({
  url: connection,
  file: (req, file) => {
    return new Promise((resolve, reject) => {
      crypto.randomBytes(16, (err, buf) => {
        if (err) {
          return reject(err);
        }
        const filename = buf.toString('hex') + path.extname(file.originalname);
        const fileInfo = {
          filename: filename,
          bucketName: 'uploads'
        };
        resolve(fileInfo);
      });
    });
  }
});
const upload = multer({ storage });

1 Ответ

0 голосов
/ 26 июня 2018

Это связано с тем, что multer пытается создать каталог. Введите правильный путь (вероятно, ./uploads/).и убедитесь, что эта папка доступна для записи

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...