Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
git推heroku后,heroku上上载的文件丢失_Git_Heroku - Fatal编程技术网

git推heroku后,heroku上上载的文件丢失

git推heroku后,heroku上上载的文件丢失,git,heroku,Git,Heroku,我相当基本的应用程序允许用户上传头像 应用程序部署到Heroku时 $ git add . $ git commit -m "description" $ git checkout master $ git merge my-cool-new-feature $ git push heroku 问题是,每次我将更改推送到Heroku时,上传到Heroku的所有文件都会丢失。我想,问题是文件夹/文件受版本控制,所以我将文件夹添加到.gitignore # Ignore User generate

我相当基本的应用程序允许用户上传头像

应用程序部署到Heroku时

$ git add .
$ git commit -m "description"
$ git checkout master
$ git merge my-cool-new-feature
$ git push heroku
问题是,每次我将更改推送到Heroku时,上传到Heroku的所有文件都会丢失。我想,问题是文件夹/文件受版本控制,所以我将文件夹添加到.gitignore

# Ignore User generated files
/public/system/*
并从存储库中删除文件

$ git rm -rf --cached public/system

但问题依然存在。你能给我指出正确的方向吗?

原因是Heroku限制了你在他们的服务器上存储数据的方式。回到
bambol
stack天,不使用外部服务。因为他们引入了
Cedar
堆栈,但是存储持久数据仍然是不可能的

正如您所发现的,每次您将新的更改推送到Heroku应用程序时(或者每次应用程序在不活动x分钟后关闭并重新启动时),您的应用程序都会重新创建,并且所有存储的数据都会丢失


最好不要使用/public目录,而是开始使用外部服务,例如,或者每次部署都会丢失文件。我的首选解决方案是使用回形针和亚马逊水桶。回形针会将您的图像存储在存储桶中,以便可以从应用程序中随意引用。

如果您的应用程序需要接收用户上传的文件,您需要确保这些上传的文件存储在一个中心和持久的位置

使用Heroku的临时文件系统,当dyno重新启动时,写入dyno文件系统的任何信息都将丢失。相反,Heroku建议支持服务。对于文件和媒体存储,这是一个很好的解决方案


您可能想阅读Heroku网站上的这篇文章:

只需将您的mongodb网络访问权限更改为“任何人访问” 问题解决了


以上所有步骤我都做了,但不起作用,最后我更改了monodb访问权限,它可以工作了

谢谢你的回答。由于数据库内容保持不变,我已经排除了重置。我在Herokus的“入门”文档中找不到任何相关内容。有人可能会认为,开发人员希望这些信息出现在常见问题解答中。再次感谢!数据库和文件访问是两件不同的事情。Heroku必须支持某种类型的持久性存储,否则开发人员快速启动功能性应用程序将毫无用处,因此他们允许您访问共享的postgreSQL实例,但这不包括文件存储访问。有关在Heroku上使用AWS S3的详细信息,请参阅: