1

私は本当に近くにいる必要があるように感じますが、これを正しく機能させることはできません。

phonegapアプリからrailsアプリ(3.1.1 ruby​​ 1.8.7 btw)にファイル転送を使用して画像を送信しています。

ファイルをファイルシステムに書き込みたい。

これはparamsハッシュです:

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でruby1.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 }1行で。

于 2012-06-08T13:35:58.130 に答える