1

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

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

但是我遇到了问题,因为生成的临时文件没有扩展名,而且我遇到了这个异常:

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

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

4

2 回答 2

0

我已经使用fileutils. 这是代码:

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)
于 2015-02-23T10:13:27.197 回答
0

或者有没有更优雅的方法来解决这个问题?

是的,您可以指定扩展名

s = Roo::Spreadsheet.open(
  params[:upload][:file].tempfile.path,
  extension: :xlsx
)
于 2021-02-23T06:58:53.500 回答