从S3获取文件,将它们放入heroku /tmp文件夹中,解压并上传回s3
我正在开发一个应用程序,尝试执行以下操作:
- 从亚马逊 s3 获取 zip 文件
- 将它们放入 heroku #{Rails.root}/tmp 文件夹
- 解压文件
- 将它们上传回 s3
- 删除临时文件
如果我运行该应用程序,一切正常在本地,但是当我尝试在 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:
- gets zip files from amazon s3
- puts them in the heroku #{Rails.root}/tmp folder
- unzips files
- upload them back to s3
- 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
除非您有更多的代码片段,否则我的猜测是 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 usingmkdir_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).