我是Rails的新手。
我有一种从谷歌驱动器下载文件并将其保存在本地光盘中的方法。下载文件后,控制台将返回null
,但该文件位于文件夹中。
我需要在我的控制器中使用此文件,但如果下载方法返回nil
,我无法将其作为对象传递。
下载方法:
nil
控制器:
def download
found = google_files.select { |f| f.id == file_id }
file_title = found.first.title
file = session.file_by_title(file_title)
path = File.join(Backup.base_directory, file_title)
file.download_to_file("#{path}")
end
执行下载方法后控制台输出:
def create
# file_id = params.fetch(:file_id)
file_id = "0Byyflt8z3jarbm5DZGNNVXZSWjg"
@backup = DiscourseDownloadFromDrive::DriveDownloader.new(file_id).download
end
记录器:
[...]
Writing chunk (1397 bytes)
Writing chunk (1397 bytes)
Writing chunk (1397 bytes)
Writing chunk (619 bytes)
Success - nil
=> nil
[4] pry(main)>
非常感谢任何有关如何处理此事的提示!
答案 0 :(得分:3)
您的download
方法始终只返回nil
。这是因为宝石download_to_file
总是返回nil
。
你应该改变你的download
方法来返回一些东西,你可以用它来获取文件。我认为这个方法应该返回下载文件的路径。
def download
found = google_files.select { |f| f.id == file_id }
file_title = found.first.title
file = session.file_by_title(file_title)
path = File.join(Backup.base_directory, file_title)
file.download_to_file("#{path}")
path
end
现在您可以在控制器中使用它:
def create
# file_id = params.fetch(:file_id)
file_id = "0Byyflt8z3jarbm5DZGNNVXZSWjg"
file_path = DiscourseDownloadFromDrive::DriveDownloader.new(file_id).download
@backup = File.open(file_path) # do whatever you want with the file, since now you know how to get it
end