如何使用Sails和MongoDB上传和保存图像

时间:2018-01-15 07:19:58

标签: mongodb reactjs sails.js

我正在开发一个项目,我正在使用后端sails js,MongoDB作为数据库和前端React js。 我的上传图片有问题 这是代码Sails后端,当我在PostMan中测试它时,我得到了这个结果(result test PostMan),并且图像没有存储在指定的文件夹中,但是在MongoDB中插入了包含id和文件名的值,

cols = df.columns[df.columns.str.contains('^d.*')]
df[cols] /=2

result test postMan

这是Reactjs前端代码

uploadFile: function (req, res) {
   var image= req.file('avatar');
         image.upload({
          adapter: require('skipper-gridfs'),
          uri: 'mongodb://localhost:27017/name_db.name_collection',
          dirname: '../../assets/images/'
        }, function (err, filesUploaded) {
          if (err){ 
            
            return res.header("Access-Control-Allow-Origin", "*");
            /*res.negotiate(err);*/res.json(err);
          }
          else{
           
            
           return
           res.header("Access-Control-Allow-Origin", "*"); res.ok({
              files: filesUploaded,
              textParams: req.params.all()
            });
          }
          
        });
      },

Sails版本0.12, 反应版本15.5, 和MongoDB版本3.4.9。

感谢您的帮助

2 个答案:

答案 0 :(得分:0)

dirname适配器没有skipper-gridfs参数,因为该文件不会存储到本地文件系统中。 Skipper会将文件存储到MongoDB数据库中。

答案 1 :(得分:0)

您需要将其作为表单数据发送

   let formData = new FormData()
            console.log(values);
            
            await formData.append('profile_picture',values.profile_picture.rawFile,values.profile_picture)
            
            
            await fetch('http://localhost:1337/api/moderators',{
                body:formData,
                method:'POST',
                credentials:'include' //If Using Session for react-app instead of JWT token
            })