我使用paperclip
gem将Excel文件上传到我的应用程序。在上传之前,我想检查header column names
是否存在。因此,我需要使用其路径打开文档并读取标题内容。但是由于我们在导入过程之前就这样做了,我们应该从被访问的路径而不是从我们上传回形针文件的路径打开它。
如,
假设我从'/home/user/rajesh/Test1.xlsx'
上传文件,回形针会将其上传到'/home/user/rajesh/Project/public/system/000/000/001/Test1.xlsx'
。所以,我需要获得值'/home/user/rajesh/Test1.xlsx'
。
代码:
if File.extname(importfile.file_file_name) == ".csv"
spreadsheet = Roo::Csv.new(importfile.file.path, nil, :ignore)
elsif File.extname(importfile.file_file_name) == ".xls"
spreadsheet = Roo::Excel.new(importfile.file.path, nil, :ignore)
elsif File.extname(importfile.file_file_name) == ".xlsx"
spreadsheet = Roo::Excelx.new(importfile.file.path, nil, :ignore)
else
raise "Unknown file type for '#{importfile.file_file_name}'"
end
但是,importfile.file.path
没有返回正确的路径。
那么,我们如何获得文件的绝对路径以及文件名?任何帮助将不胜感激。
答案 0 :(得分:1)
如果我理解正确,您的问题与paperclip
无关,我认为浏览器在使用文件上传时从不会将本地路径发送到该文件。
什么阻止您在运行导入之前检查附件?