【问题标题】:Rails ROO Gem Excel upload validate file extensionRails ROO Gem Excel 上传验证文件扩展名
【发布时间】:2018-12-17 06:14:07
【问题描述】:

下面的代码检查并引发未知文件格式的运行时错误。

def open_spreadsheet
    case File.extname(file.original_filename)
        when ".csv" then CSV.new(file.path)
        when ".xls" then Roo::Excel.new(file.path, nil, :ignore)
        when ".xlsx" then Roo::Excelx.new(file.path)
    else 
        raise "Unknown file type: #{file.original_filename}"
    end
end

我想显示错误消息而不是运行时错误。

attr_accessor :file

如果标准格式的标头有任何修改,我如何验证上传的电子表格标头字段并显示错误消息?

【问题讨论】:

  • 您想在用户上传文件时验证文件扩展名。实现在一定程度上取决于您用于上传的控制器、模型和库。例如Carrierwave 允许您定义extension_whitelist。如果扩展名与列表不匹配,则验证失败,用户应该会看到错误。
  • 我现在用accept属性来接受xls和xlsx。
  • 我如何验证标头值

标签: ruby-on-rails ruby spreadsheet roo


【解决方案1】:

试试这样的:

def open_spreadsheet
    case File.extname self.file.original_filename
    when ".xls"
        Roo::Excel.new self.file.path
    when ".xlsx"
        Roo::Excelx.new self.file.path
    else
        self.errors[:file] << I18n.t("errors.messages.invalid_file_format", extension: File.extname(file.original_filename))
        return nil
    end
end

您可以在那里对消息进行硬编码,但最好将其放在正确的 I18n 标记中

【讨论】:

  • 它不显示错误消息,也不验证扩展。
  • 如何验证工作表的标题?
猜你喜欢
  • 2014-11-06
  • 1970-01-01
  • 2011-05-13
  • 2021-03-09
  • 1970-01-01
  • 2012-01-02
  • 1970-01-01
  • 1970-01-01
  • 2018-11-26
相关资源
最近更新 更多