Reactjs 通过firebase函数上传图像

Reactjs 通过firebase函数上传图像,reactjs,firebase,express,google-cloud-storage,dropzone.js,Reactjs,Firebase,Express,Google Cloud Storage,Dropzone.js,我有一个react应用程序,其中我使用了react dropzone组件。当我将图像放入其中时,我会在firebase函数上为每个图像发送一个POST请求(在将来的批量上传中,但每次一步),以处理文件并将其保存在函数本地tmp存储中。当我使用远程url时,它总是在cors上失败,并且访问控制允许源站http://localhost:3000。但是,当我在本地提供这些函数并使用localhost url作为上传函数时,它就可以工作了 快速上传功能: const storage = multer.d

我有一个react应用程序,其中我使用了
react dropzone组件
。当我将图像放入其中时,我会在firebase函数上为每个图像发送一个POST请求(在将来的批量上传中,但每次一步),以处理文件并将其保存在函数本地tmp存储中。当我使用远程url时,它总是在
cors
上失败,并且
访问控制允许源站
http://localhost:3000
。但是,当我在本地提供这些函数并使用localhost url作为上传函数时,它就可以工作了

快速上传功能:

const storage = multer.diskStorage({
  destination: './tmp/',
  filename: (req, file, cb) => {
    cb(null, file.originalname);
  }
});

const upload = multer({ storage });

export default () => {
  const app = express();
  app.use(cors(), upload.single('file'), (req, res) => {
    if (req.file) {
      res.send({ path: req.file.path });
    } else {
      res.send({ responseText: 'no file' });
    }
  });
  return app;
};
还尝试使用
cors({origin:true})
cors({origin:'http://localhost:3000“})
,但运气不好


我从函数得到的响应是“无文件”,当我将
console.log
放入其中时,文件是
null
。在
localhost
上,它按预期工作。

您无法写入磁盘,一旦您的功能结束,所有内容都将被销毁。看@FranciscoMateo好的,这是一个很好的观点。我可以在函数执行期间将图像上载到存储器,但函数仍然无法访问上载的图像,原因是
访问控制允许源代码
我认为firebase函数目前不支持multer。请看@Doug_Stevenson的答案是改用营业员。