Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Multer.Multer中间件是';t响应/工作_Node.js_Reactjs_Mongodb - Fatal编程技术网

Node.js Multer.Multer中间件是';t响应/工作

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

我曾试图使用multer和multer-gridfs-storage将IMG保存到mongodb中。每次我尝试使用请求上载IMG时,我都会得到未定义的内容,而且我还有几个控制台日志到中间件中,但它们不能像multer本身那样工作。无论是前/后,文件名都是相同的

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});
};