Reactjs 通过firebase函数上传图像
我有一个react应用程序,其中我使用了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 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的答案是改用营业员。