Ruby on rails 在控制器方法中将上载的文件读取到文件对象中-“;can';t将临时文件转换为字符串";

Ruby on rails 在控制器方法中将上载的文件读取到文件对象中-“;can';t将临时文件转换为字符串";,ruby-on-rails,ruby,file,file-upload,Ruby On Rails,Ruby,File,File Upload,因此,我尝试实现一种文件上传功能,当用户上传文件时,我可以将其读入文件对象并相应地进行处理: def create name = params[:upload]['datafile'].original_filename directory = "public/data" # create the file path path = File.join(directory, name) # read the file File.open(params[:u

因此,我尝试实现一种文件上传功能,当用户上传文件时,我可以将其读入文件对象并相应地进行处理:

def create
  name = params[:upload]['datafile'].original_filename
  directory = "public/data"

   # create the file path
   path = File.join(directory, name)

   # read the file
      File.open(params[:upload][:datafile], 'rb') { | file |
         # do something to the file  
    }    
end
当我试图读取文件时,它在File.open上抛出了一个错误“无法将Tempfile转换为字符串”


我遗漏了什么?

这意味着
参数[:upload][:datafile]
已经是一个文件,所以您不需要将其交给
文件。打开
。您的代码应该是:

def create
  name = params[:upload]['datafile'].original_filename
  directory = "public/data"

   # create the file path
   path = File.join(directory, name)

   file = params[:upload][:datafile]
   # do something to the file, for example:
   #    file.read(2) #=> "ab"
end