从S3获取文件,将它们放入heroku /tmp文件夹中,解压并上传回s3

发布于 2024-12-11 11:53:19 字数 624 浏览 0 评论 0原文

我正在开发一个应用程序,尝试执行以下操作:

  1. 从亚马逊 s3 获取 zip 文件
  2. 将它们放入 heroku #{Rails.root}/tmp 文件夹
  3. 解压文件
  4. 将它们上传回 s3
  5. 删除临时文件

如果我运行该应用程序,一切正常在本地,但是当我尝试在 heroku 上运行该应用程序时,它不起作用。该脚本运行并没有给出任何错误,但文件没有传输到 tmp 文件夹。

我需要做一些不同的事情来将文件存储在 heroku tmp 文件夹中吗?文件名中是否需要 Process.pid?

我正在使用 AWS::S3::S3Object.url_for 生成临时 url 以从 s3 获取文件

我正在使用以下代码获取文件:

Net::HTTP.start("s3.amazonaws.com") { |http|
    resp = http.get(file_path)
    open("#{Rails.root}/tmp/files/#{tmp_save_path}", "wb") { |file|
        file.write(resp.body)
    }
}

感谢您的帮助。

I'm developing an app that attempts to do the following:

  1. gets zip files from amazon s3
  2. puts them in the heroku #{Rails.root}/tmp folder
  3. unzips files
  4. upload them back to s3
  5. deletes temporary files

Everything works if I run the app locally, but when I try to run the app on heroku, it just doesn't work. The script runs and gives me no error but the files are not transferred to the tmp folder.

Do I need to do something different to store files in the heroku tmp folder? Is the Process.pid required in filenames?

I'm using AWS::S3::S3Object.url_for to generate temporary urls to get the files from s3

i'm using the following code to get the files:

Net::HTTP.start("s3.amazonaws.com") { |http|
    resp = http.get(file_path)
    open("#{Rails.root}/tmp/files/#{tmp_save_path}", "wb") { |file|
        file.write(resp.body)
    }
}

Thanks for your help.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

月亮坠入山谷 2024-12-18 11:53:20

除非您有更多的代码片段,否则我的猜测是 Heroku 上不存在目录“#{Rails.root}/tmp/files/...”(这应该引发: Errno::ENOENT: No这样的文件或目录)。尝试使用 mkdir_p 在每次调用之前创建它(记住 Heroku 会清除 tmp)。您需要从路径中解析出文件夹(请参阅 文件实用程序)。

Unless you have more to the snippet, my guess is that the directory "#{Rails.root}/tmp/files/..." does not exist on Heroku (this should be raising: Errno::ENOENT: No such file or directory). Try using mkdir_p to create it before every call (remember Heroku will clear out tmp). You will need to parse out the folder from the path (see file utilities).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文