Rails重命名tempfile

时间:2015-02-16 10:54:51

标签: ruby-on-rails-4 file-upload temporary-files roo-gem

我正在使用roo-rb来访问上传的文件。我的代码是这样的:

s = Roo::Excelx.new(params[:upload][:file].tempfile.path)

但我遇到问题,因为生成的tempfile没有扩展名,我有这个例外:

  

... / AppData / Local / Temp / RackMultipart20150216-10192-13yn50s不是Excel-xlsx文件

有没有办法重命名tempfile.path,以便它有适当的扩展名(xlsx)?或者有更优雅的方法来解决这个问题吗?

2 个答案:

答案 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
)