首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

当我推送一个新版本的应用程序时,为什么我在Heroku上删除了muy上传的文件?

当您推送一个新版本的应用程序时,在Heroku上删除了您之前上传的文件,可能是由于以下原因:

  1. Heroku的文件系统是临时性的:Heroku使用的是基于Dyno的架构,每次部署新版本时,都会创建一个新的Dyno来运行您的应用程序。这意味着每个Dyno都有自己独立的文件系统,并且不会持久保存文件。当您删除或重新部署应用程序时,之前上传的文件也会被删除。
  2. 无状态的应用程序设计:Heroku鼓励开发无状态的应用程序设计,即应用程序不依赖于本地文件系统来存储数据。相反,应用程序应该使用外部存储服务(如数据库或对象存储)来保存和管理数据。这样做的好处是可以实现应用程序的水平扩展和高可用性。

解决方案:

为了解决在Heroku上删除上传的文件的问题,您可以考虑以下解决方案:

  1. 使用云存储服务:将您的文件存储在云存储服务中,例如腾讯云的对象存储(COS)。您可以将文件上传到COS,并在应用程序中使用COS提供的API来访问和管理这些文件。这样,无论您在Heroku上部署多少次新版本,您的文件都将安全保存在云存储中。
  2. 使用数据库:如果您的应用程序需要存储和管理用户上传的文件,可以考虑将文件的元数据(如文件名、大小、类型等)存储在数据库中,而将文件本身存储在云存储服务中。这样,您可以通过数据库中的引用来管理文件,并在每次部署新版本时保留文件的引用。
  3. 使用第三方文件托管服务:如果您的应用程序需要频繁地上传和删除文件,并且需要保留文件的持久性,可以考虑使用第三方文件托管服务,如腾讯云的云文件存储(CFS)。CFS提供了可扩展的文件存储解决方案,可以方便地集成到您的应用程序中,并提供持久性存储和高可用性。

总结:

在Heroku上删除上传的文件是由于其临时性的文件系统和无状态的应用程序设计。为了解决这个问题,您可以使用云存储服务、数据库或第三方文件托管服务来管理和保留文件。腾讯云提供了一系列与文件存储相关的产品和服务,可以满足您的需求。具体推荐的腾讯云产品和产品介绍链接如下:

  • 对象存储(COS):https://cloud.tencent.com/product/cos
  • 云文件存储(CFS):https://cloud.tencent.com/product/cfs
相关搜索:当我将一个项目推送到Github时,我有最早提交的文件,为什么?当我在heroku上重新部署我的flask应用程序时,为什么我不能保持最近发布的文章?为什么我的react应用程序,它有一个节点和mysql后端,在本地工作,而不是在Heroku上?当我在我的android应用程序中从图库加载图像时,为什么位图返回一个较小的图像?当我在我的应用程序中按下按钮时,我得到了一个NaN的值,有人能指出为什么吗?在R中,当我试图写入一个excel文件时,为什么我得到一个“没有这样的文件或目录”的错误?当我在google chrome上打开开发人员工具时,为什么我的css代码文件有我的html源代码?为什么当我在android webview中添加一个必应地图(我的位置) url时,不显示.gpx文件中的路径?为什么当我想在我的Qt应用程序上打开第二个窗口时,我的头文件无法识别第二个窗口?我正在尝试使用Xcode9.2构建和启动我的应用程序,当我在设备上构建它时,它只是一个白屏我正在开发一个使用node js的应用程序,它在本地工作得很好,但每当我试图将它上传到heroku时就会崩溃,它说cat find dotenv为什么当我在我的TextEditingController中添加一个侦听器来改变textSize时,焦点仍然停留在TextField上?当我在SSB Schema中的一个表上运行dbms_stats.gather_table_stats时,为什么我得到ORA-20000?当我在windows上运行我的rust应用程序时,着色可以与cargo run一起工作,但当直接使用二进制文件时,它会完全崩溃。为什么?当我在具有多个显示器的macOS中切换桌面时,为什么焦点切换到另一个意外的应用程序(在我的情况下是iTerm2或VSCode )?当我尝试在Mac上的一个文件夹中运行ng new时,我收到一个错误,指出包安装失败和逻辑示意图工作流失败
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 苹果app怎么上架

    1、苹果要求版本更新必须使用iOS版本更新内置更新机制。 Design: Preamble Design Preamble Your app includes a responsive version button or alerts the user to update the app. To avoid user confusion, app version updates must utilize the iOS built-in update mechanism. Please see attached screenshots for details. Next Steps To resolve this issue, please remove the responsive version button feature from your app. To distribute a new version of your app, upload the new app binary version into the same iTunes Connect record you created for the app's previous version. Updated versions keep the same Apple ID, iTunes Connect ID (SKU), and bundle ID as the original version, and are available free to customers who purchased a previous version. Resources To create new versions of your app, please review the Create a new version section in iTunes Connect Developer Help. 翻译过来: 设计:序言 设计前言 您的应用程式包含响应式版本按钮,或提醒用户更新应用程式。 为了避免用户混淆,应用版本更新必须利用iOS内置的更新机制。 详情请参阅附录截图。 下一步 要解决此问题,请从应用程序中删除响应式版本按钮功能。 要分发新版本的应用程序,请将新的应用程序二进制版本上传到为应用程序的以前版本创建的iTunes Connect记录中。 更新的版本保持相同的Apple ID,iTunes Connect ID(SKU)和捆绑ID作为原始版本,对于购买以前版本的客户可以免费使用。 资源 要创建新版本的应用程序,请查看iTunes Connect开发人员帮助中的创建新版本部分。 解决办法:我的做法是给审核的时候隐藏检查版本检查更新功能 2、应用程序是专门为iPhone开发的,用户仍然可以在iPad上使用您的应用程序,而且不能影响正常的功能使用 2. 4 Performance: Hardware Compatibility Guideline 2.4.1 - Performance - Hardware Compatibility We noticed that your app did not run at iPhone resolution when reviewed on iPad running iOS 10.3.2. Specifically, the UI in this iPhone app is cut-off and unaccessible via scrolling on iPad. Please see attached screenshots for details. Next Steps To resolve this issue, please revise your app to ensure it runs and displays properly at iPhone resolution on iPad. Even if your app was developed specifically for iPhone, users should still be able to use your app on iPad. Resources For information on iOS device screen sizes and resolutions, please review the iOS Human Interface Guidelines as well as Points versus Pixels in the View Programming Guide for iOS. 翻译结果: 2.4性能:硬件兼容性 准则2.4.1 - 性能 - 硬件兼容性 我们注意到,在运行iOS 10.3.2的iPad上进

    03

    通过 GitExtensions 来使用 Git 子模块功能

    众所周知,编程,尤其是面向对象编程的一个重要思想就是 “封装”,可重用的代码逻辑封装为方法,使用于同一业务的方法封装为类,功能相关的类封装到一个类库中,等等等等。在 .NET 中,一个项目最终生成一个类库(DLL),当然,这个项目可能会引用其它项目或类库(所以生成路径下可能好多 .dll)。而我们用开发工具 Visual Studio 打开的一般是个解决方案,解决方案中一般包含了 1~n 个项目。另外,现在的开发流程中,一般都会使用版本控制系统,比较流行的就是 Git 和 SVN,就拿 Git 来说,一般我们会将一个解决方案放在一个代码仓库中,然后托管在提供 Git 代码仓库托管服务的网站上,比较流行的就是 GitHub 和 Gitee。

    01
    领券