在rails应用程序中,如果我在本地工作,我可以读取一个文件夹,其中包含自己的子文件夹和文件。在Heroku不工作。有什么帮助吗?
def upload_multifiles
dir = params[:path]
files_directories = Dir["#{dir}/**/*"]
files = []
files_directories.each do |file_directory|
if file_directory.include? ".pdf"
files << file_directory
end
end
端
我得到的错误是:
2017-08-07T08:23:06.984190+00:00 app[web.1]: I, [2017-08-07T08:23:06.984142 #4] INFO -- : [d25c9aa4-70c2-44c1-a44e-6c0a19a92fd8] Completed 500 Internal Server Error in 3ms (ActiveRecord: 0.6ms)
2017-08-07T08:23:06.983899+00:00 app[web.1]: found_dir
2017-08-07T08:23:06.984787+00:00 app[web.1]: F, [2017-08-07T08:23:06.984747 #4] FATAL -- : [d25c9aa4-70c2-44c1-a44e-6c0a19a92fd8] app/controllers/multiuploader_controller.rb:14:in `open'
2017-08-07T08:23:06.984642+00:00 app[web.1]: F, [2017-08-07T08:23:06.984593 #4] FATAL -- : [d25c9aa4-70c2-44c1-a44e-6c0a19a92fd8]
2017-08-07T08:23:06.984756+00:00 app[web.1]: F, [2017-08-07T08:23:06.984698 #4] FATAL -- : [d25c9aa4-70c2-44c1-a44e-6c0a19a92fd8]
2017-08-07T08:23:06.984697+00:00 app[web.1]: F, [2017-08-07T08:23:06.984647 #4] FATAL -- : [d25c9aa4-70c2-44c1-a44e-6c0a19a92fd8] Errno::ENOENT (No such file or directory @ dir_initialize - /Users/xxxxx/yyyyy/ttttt/zzzzzz):
2017-08-07T08:23:06.984788+00:00 app[web.1]: [d25c9aa4-70c2-44c1-a44e-6c0a19a92fd8] app/controllers/multiuploader_controller.rb:14:in `upload_multifiles'
提前多多感谢
阿尔伯特
答案 0 :(得分:0)
你不能像在lolcal机器上那样在heroku上使用文件系统。如果要存储文件(来自上传),则需要使用S3之类的东西。 您可以在此处详细了解:How to use heroku's ephemeral filesystem
如果您只想阅读应用附带的文件:路径 / Users / xxxx 是OS X目录结构,在heroku上不存在。您可以使用Rails.root
来构建适用于所有环境的路径。
此外:通过参数提供的路径列出文件听起来像是一个巨大的安全风险给我。你不应该这样做。
另外:有一种更优雅的方式来创建过滤后的数组,例如:
files = ['a.pdf', 'b.pdf', 'c.txt']
pdfs = files.select { |file| file.ends_with?('.pdf') }