6

にファイルがあり@attachmentます。デバッグから:

"datafile"=>#<ActionDispatch::Http::UploadedFile:0x3eee9c0        @original_filename="filename.jpg",
 @content_type="image/jpeg",
 @headers="Content-Disposition: form-data; name=\"datafile\";   filename=\"filename.jpg\"\r\nContent-Type: image/jpeg\r\n",
 @tempfile=#<File:C:/Users/.../RackMultipart20121026-2452-g369hf>>,

ユーザーフォームからアップロードされました。

メールに添付しようとしています:

...
attachments[@attachment.original_filename] = @attachment
mail(:to => "email@email.com", :subject => "test", :from => @fromaddress)

どのエラー:

#の未定義のメソッド `length'

私も試しました

attachments[@attachment.original_filename] = @attachment.tempfile

どのエラー:

undefined method `[]' for #<Tempfile:0x5629e48>

@attachment.original_filename適切なファイル名を返します(例では「filename.jpg」)

明らかなことはありますか?

4

1 に答える 1

8

アップロードされたファイルをどこかに保存しない限り、それを使ってできることは少し制限されます(セキュリティ上の理由から、アップロードを検証してからファイルを保存することになっています)。

readしかし、あなたはファイルをすることができるはずです:

attachments[@attachment.original_filename] = @attachment.read

注:私はこれをテストしていません、多分あなたはから読む必要があります@attachment.tempfile

于 2012-10-26T19:29:21.593 に答える