大家晚上好,我难以将URL保存为mongodb数据库。因为mongo在网址的每个部分都添加了额外的斜杠。像这样: “ localhost:3333 \ uploads \ Untitled1.cpp” 但在我的控制台日志中,我得到了正常结果(请看屏幕快照中的终端)。怎么了请帮助
let storage = multer.diskStorage({
destination: (req, file, cb) =>{
cb(null, '/uploads')
},
filename: (req, file, cb) => {
cb(null, file.originalname)
}
})
let upload = multer({ storage: storage })
let type = upload.single('myFile');
app.post('/upload', type, (req, res) => {
const url = `http://localhost:3333${req.file.path}`;
const image = {
name: req.file.originalname,
url: url
}
console.log(image.url)
const newImage = new Image(image);
newImage.save()
.then (res.json('Картинку додано'))
.catch(err => res.status(400).json(err));
});
答案 0 :(得分:1)
我假设您使用的Windows操作系统在文件系统中的路径使用反斜杠“ \”。 Web(和基于Linux的操作系统)对路径使用正斜杠“ /”。因此,我猜$ {req.file.path}是指您计算机上的文件,它正在返回包含反斜杠的路径。
您可以将String.replace()
与正则表达式一起使用,以将正斜杠替换为反斜杠:
let webPath = req.file.path.replace(/\\/g,'/'))
const url = `http://localhost:3333${webPath}`;
答案 1 :(得分:0)
我找到了解决方案。您需要做的是在将文件发布/保存到数据库中时,需要使用替换功能,然后将路径以正斜杠保存到数据库中。
以下是代码段:
app.post('/upload', upload.single('file'), (req, res, next) => {
const file = new Cluster1({
filePath: req.file.path.replace(/\\/g, '/'),
name: req.file.originalname
});
file.save()
您可以看到我如何使用替换功能来避免\\
或\