在rails中上传文件时ArgumentError(字符串包含空字节)

时间:2017-07-18 12:23:30

标签: ruby ruby-on-rails-5 roo-gem

我正在尝试使用roo gem在excel文件上运行某些操作。当我手动完成时,这非常有效:

file = File.join(Rails.root, 'october_data.xlsx')
spreadsheet = Roo::Excelx.new(file)

但是,当我通过表单上传文件时,这不起作用:

file = File.read params["Team Changes"]["document"].path
spreadsheet = Roo::Excelx.new(file)

我收到以下错误:

 ArgumentError (string contains null byte)

似乎有很多关于string contains null byte的文章,但我所看到的一切似乎与我正在做的事情无关。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

这件事发生在我身上。显然,这是一个编码问题。 读取文件时,尝试将编码指定为“ ASCII-8BIT”。

file = File.read(params["Team Changes"]["document"].path, encoding: 'ASCII-8BIT')
spreadsheet = Roo::Excelx.new(file)