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 に答える