Node.js Multer.Multer中间件是';t响应/工作
我曾试图使用multer和multer-gridfs-storage将IMG保存到mongodb中。每次我尝试使用请求上载IMG时,我都会得到未定义的内容,而且我还有几个控制台日志到中间件中,但它们不能像multer本身那样工作。无论是前/后,文件名都是相同的Node.js Multer.Multer中间件是';t响应/工作,node.js,reactjs,mongodb,Node.js,Reactjs,Mongodb,我曾试图使用multer和multer-gridfs-storage将IMG保存到mongodb中。每次我尝试使用请求上载IMG时,我都会得到未定义的内容,而且我还有几个控制台日志到中间件中,但它们不能像multer本身那样工作。无论是前/后,文件名都是相同的 express let conn = mongoose.connection; //-----------Multer-------------- conn.once('open', () => { gfs = Grid(c
express
let conn = mongoose.connection;
//-----------Multer--------------
conn.once('open', () => {
gfs = Grid(conn.db, mongoose.mongo);
gfs.collection('uploads');
});
const storage = new GridFsStorage({
url: process.env.MONGO_URI,
file: (req, file) => {
console.log(file, 'file from multer');
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);
console.log(fileInfo, 'file info from GridFs');
});
});
},
});
const upload = multer({storage});
//--------------Routes
router.post(
'/api/profile/upload/avatar',
upload.single('downloadAvatar'),
(req, res) => {
console.log(req.files, 'req.files');
}
);
反应
setFile(e.target.files)}
/>
export const uploadAvatar=(文件)=>async(分派)=>{
const res=wait api.post('/api/profile/upload/avatar',file);
console.log(res.data,'数据操作');
分派({type:types.UPLOAD_AVATAR,payload:res.data});
};
React
<form
action='/api/profile/upload/avatar'
className='downloadButton'
encType='multipart/form-data'
>
<label htmlFor='downloadAvatar'>
<AddIcon></AddIcon>
<input
name='downloadAvatar'
id='downloadAvatar'
type='file'
accept='image/'
style={{display: 'none'}}
onChange={(e) => setFile(e.target.files)}
/>
</label>
</form>
export const uploadAvatar = (file) => async (dispatch) => {
const res = await api.post('/api/profile/upload/avatar', file);
console.log(res.data, 'data action ');
dispatch({type: types.UPLOAD_AVATAR, payload: res.data});
};