我正在使用roo-rb来访问上传的文件。我的代码是这样的:
s = Roo::Excelx.new(params[:upload][:file].tempfile.path)
但我遇到问题,因为生成的tempfile没有扩展名,我有这个例外:
... / AppData / Local / Temp / RackMultipart20150216-10192-13yn50s不是Excel-xlsx文件
有没有办法重命名tempfile.path
,以便它有适当的扩展名(xlsx)?或者有更优雅的方法来解决这个问题吗?
答案 0 :(得分:0)
我已使用fileutils
成功重命名了一个临时文件(即使部署在Heroku上)。这是代码:
require 'roo'
require 'fileutils'
tmp = params[:upload][:file].tempfile
file = File.join("public", params[:upload][:file].original_filename)
FileUtils.cp tmp.path, file
s = Roo::Excelx.new(file)
答案 1 :(得分:0)
或者有更优雅的方法来解决这个问题吗?
是的,您可以specify the extension。
s = Roo::Spreadsheet.open(
params[:upload][:file].tempfile.path,
extension: :xlsx
)