0

在我的应用程序中,用户必须上传一个文本文档,然后由接收控制器操作解析其内容。我已成功上传文档,但我无法阅读其内容。

关于这个问题有几个线程。我已经或多或少地尝试了这些线程上推荐的所有内容,但我仍然无法解决问题。

这是我的代码:

file_data = params[:file]

contents = ""

if file_data.respond_to?(:read)
  contents = file_data.read
else
  if file_data.respond_to?(:path)
    File.open(file_data, 'r').each_line do |line|
      elts = line.split
      #
      #
    end
  end
end

所以这是我的问题:file_data 没有“respond_to”?:read 或 :path。根据该主题的其他一些线程,如果上传的文件小于某个大小,则将其解释为字符串并响应 :read。否则,它应该响应 :path。但在我的代码中,它都不响应。

如果我尝试取出 if 语句并立即尝试 File.open(file_data, 'r'),我会收到一条错误消息,指出找不到文件。

有人可以帮我找出问题所在吗?

PS,我真的很抱歉这是一个多余的问题,但我发现其他线程没有帮助。

4

2 回答 2

0

首先,file_data通过添加file_data.inspect. 这可能是您意想不到的事情,尤其是如果表单设置不正确(即:multipart => true)。

Rails 应该将上传的文件包含在提供统一接口的特殊对象中,这样简单的事情应该可以工作:

file_data.read.each_line do |line|
  elts = line.split
  #
  #
end
于 2012-09-07T08:38:35.093 回答
0

你真的在存储文件吗?因为如果你不是,当然是找不到的。

于 2012-09-07T05:09:46.837 回答