更新部署 - 上传的图像在重新部署到 Google Cloud 后会被删除



所以我有一个节点js web应用程序,这个web应用程序有一个文件夹来存储用户从移动应用程序上传的图像。如何将图像上传到文件夹是使用图像的base64字符串,并使用fs.writeFile将图像保存到文件夹中,如下所示:

fs.writeFile(__dirname + '/../images/complaintImg/complaintcase_' + data.cID + '.jpg', Buffer.from(data.complaintImage, 'base64'), function (err) {
if (err) {
console.log(err);
} else {
console.log("success");
}
});

问题是,每当应用程序重新部署到谷歌云时,图像都会被删除。这是因为应用程序的本地版本的图像文件夹为空 - 当用户上传图像时,我没有获得该图像的本地副本。

如何防止每次部署都删除映像? 由于应用程序会不断更新(更改 JS 或 HTML 文件(,因此我无法在每次部署时都删除映像。如何更新部署以仅部署某些文件?gcloud app deploy命令似乎部署了整个项目。还是我应该将图像直接上传到谷歌云存储?

请帮忙,目前移动应用程序尚未向公众发布,因此现在每次部署都删除映像仍然不是一个大问题,但一旦向公众发布,就会出现。 因为他们上传的图像非常重要。 提前谢谢你!

您选择的__dirname目录似乎可能位于实例本地/tmp或某个其他目录下。如果是这样,每当启动新实例时,映像都会消失(这总是在新部署时发生,但也可能发生在部署之间(。这是意料之中的,实例始终"从头开始"启动。

您需要存储应用创建的文件,并且希望在持久存储产品(如云存储(上继续实例(重新(启动,请参阅使用云存储(或使用云存储实现灵活的环境(。请注意,您不能将常规文件系统调用与 Cloud Storage 一起使用,您需要使用记录的客户端库。

正如Dan Cornilescu的回答中所述,对于用户上传的文件,您应该将它们存储在GAE Standard或GAE Flexible的Cloud Storage中。

作为参考,对于那些使用Python 2.7,Java 8或PHP 5的人来说,还有另一种选择,即BlobStore API

相关内容

  • 没有找到相关文章

最新更新