1

我觉得我应该非常接近,但我无法让它正常工作。

我正在使用文件传输将图像从我的 phonegap 应用程序发送到我的 rails 应用程序(3.1.1 ruby​​ 1.8.7 btw)。

我想将文件写入文件系统。

这是参数哈希:

Parameters: {"file"=>#<ActionDispatch::Http::UploadedFile:0x7f1e2baa94e8 @tempfile=#<File:/tmp/RackMultipart20120607-5707-owzii5-0>, 
@headers="Content-Disposition: form-data; name=\"file\"; filename=\"image.jpg\"\r\nContent-Type: image/jpeg\r\n", 
@content_type="image/jpeg", @original_filename="image.jpg">}

基本上,我可以通过 params[:file] 访问该文件。现在我只需要将该图像写入我的文件系统。我没有图像对应的模型,所以我真的不需要回形针。现在,我能想到的最好的是:

open(params[:file]) do |image|
  File.open("theiamge.jpg","wb"){|file| file.puts image.read }
end

这是我得到的错误:

TypeError (can't convert ActionDispatch::Http::UploadedFile into String):

编辑:

所以,这很奇怪。我可以让这些命令在我的 irb 中工作:

 File.open('newimage.jpg', 'wb') do |f|
   f.write File.open('oldimage.jpg').read
 end

但是,这不起作用:

 File.open("ihatedetails.jpg",'wb') do |f|
   f.write File.open(params[:file]).read
 end

我收到此错误:TypeError(无法将 ActionDispatch::Http::UploadedFile 转换为字符串):

我在我的 irb 中使用 ruby​​ 1.9.3,但这些命令应该是相同的......

所以我现在很难过。

4

1 回答 1

2

代码应该是:

File.open("ihatedetails.jpg",'wb') do |f|
  f.write params[:file].read
end

File.open("ihatedetails.jpg",'wb') { |f| f.write params[:file].read }在一行中。

于 2012-06-08T13:35:58.130 回答