node.js - Angular 6 文件上传
问题描述
一直停留在这个问题上。我有一个使用 Angular 6 的平均堆栈应用程序。我正在尝试将保存文件上传到我的后端。我找到了这篇文章。但是要么我收到一个类似于 crypt 的错误
<!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)</pre> </body> </html>
从服务器返回或 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 });
});
});
这是我设置 multer、网格文件流和存储的方法
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 });
解决方案
它与 multer 试图创建目录有关 写入正确的路径名(可能是 ./uploads/)。并确保该文件夹是可写的
推荐阅读
- c++ - 为什么从模板类和抽象类继承 C++ 类会导致类成员重复?
- slack - 是否可以在 Slack 中添加具有不同肤色的自定义表情符号?
- javascript - Javascript:从对象数组创建二维数组
- flutter - Flutter - 带有 CupertinoSliverNavigationBar 的 ScrollController,largeTitle 到 smallTitle 不起作用
- javascript - ReactJs,this.setState 没有像我期望的那样工作
- python - Tensorflow 中的 KFold 交叉验证
- python-3.x - 在 Matplotlib 中按数字顺序显示轴单位
- javascript - 无法清除Interval()
- python - 如何撤消 jupyter notebook 的 cmd 命令?
- python - I can iterate through my first iteration of PyTorch successfully, but am unable to do a second iteration. Please see code and error I get