我正在将 Multer 与 MEAN2 堆栈一起使用,并且我通过 ng2-uploader 可以正常上传文件。
但我试图将其上传到服务器,以便我可以将 csv 文件解析为 json,但这不是问题。
文件上传正常...但它上传到AppData\Local\Temp
,这是上传后的文件信息:
[ { fieldname: 'file',
originalname: 'sfgsgsfrfs.jpg',
encoding: '7bit',
mimetype: 'image/jpeg',
destination: 'C:\\Users\\Jezyk\\AppData\\Local\\Temp',
filename: 'z83yrcprp4m8azfflxr.jpg',
path: 'C:\\Users\\Jezyk\\AppData\\Local\\Temp\\z83yrcprp4m8azfflxr.jpg',
size: 120850 } ]
这是我用来存储文件的代码:
const upload = multer({
dest: './server/uploads/',
storage: multer.diskStorage({
filename: (req, file, cb) => {
let ext = path.extname(file.originalname);
cb(null, `${Math.random().toString(36).substring(7)}${ext}`);
}
})
});
router.route('/upload').post(upload.any(), (req, res) => {
console.log(req.files);
res.json(req.files.map(file => {
let ext = path.extname(file.originalname);
return {
originalName: file.originalname,
filename: file.filename
}
}));
});
知道为什么要这样做吗?
最佳答案
如果使用显式的已配置存储实例,则需要添加destination
回调:
const upload = multer({
storage: multer.diskStorage({
destination: (req, file, cb) => {
cb(null, __dirname + '/server/uploads/')
},
filename: (req, file, cb) => {
let ext = path.extname(file.originalname);
cb(null, `${Math.random().toString(36).substring(7)}${ext}`);
}
})
});
关于node.js - Multer 存储在本地 AppData 而不是指定目录中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39540117/