【发布时间】:2018-08-13 16:11:25
【问题描述】:
所以我对整个编码场景非常陌生,并且正在尝试学习如何使用 react native 进行编码。现在,我正在尝试弄清楚如何使用 firebase(函数)和谷歌云存储上传图片。
下面是后端代码,使我能够将每次提交的图像上传到 Firebase。
我想知道是否可以修改此代码,以便每次提交时可以上传多张图片?如果是这样,我将如何去做?
exports.storeImage = functions.https.onRequest((request, response) => {
return cors(request, response, () => {
const body = JSON.parse(request.body);
fs.writeFileSync("/tmp/uploaded-image.jpg", body.image, "base64", err => {
console.log(err);
return response.status(500).json({ error: err });
});
const bucket = gcs.bucket("myapp.appspot.com");
const uuid = UUID();
return bucket.upload(
"/tmp/uploaded-image.jpg",
{
uploadType: "media",
destination: "/places/" + uuid + ".jpg",
metadata: {
metadata: {
contentType: "image/jpeg",
firebaseStorageDownloadTokens: uuid
}
}
},
(err, file) => {
if (!err) {
return response.status(201).json({
imageUrl:
"https://firebasestorage.googleapis.com/v0/b/" +
bucket.name +
"/o/" +
encodeURIComponent(file.name) +
"?alt=media&token=" +
uuid,
imagePath: "/places/" + uuid + ".jpg"
});
} else {
console.log(err);
return response.status(500).json({ error: err });
}
}
);
})
.catch(error => {
console.log("Token is invalid!");
response.status(403).json({error: "Unauthorized"});
});
});
});
【问题讨论】:
-
感谢 Doug 对标签的帮助!
-
嗨,我来自另一个问题。我可以帮助编写代码,但首先我想知道您为什么决定从云函数而不是直接从 React Native 执行此操作。似乎在客户端这样做会产生更简单的代码,而且成本也会更低,因为您只需为存储付费,而不为云功能执行付费。
-
嗨,里卡多。主要原因是这是基于我在网上学到的一个讲座啊哈哈哈。所以我没有特别偏好我想写哪种方式。这正是我被教导能够将图像上传到 Firebase 以及获取它们各自的 url 和 urlPaths 的方式
-
再次感谢里卡多的帮助 :)
标签: firebase react-native google-cloud-functions