2011-01-30 9 views
0

クライアントのファイルの内容を読み込み、base64でエンコードし、JSON経由でRailsのバックエンドに送り、base64でデコードしてデータを格納しますデータベース。私はその後、添付ファイルとしてデータを含むメールをRailsから送信しようとします。ここでデータベースからバイナリデータを読み込み、Ruby on Railsで添付ファイルとして使用

は、バイナリデータの私の列定義である:ここで

t.column :binarydata, :binary, :limit => 10.megabytes, :null => false

は私のメールテンプレートです:私はデータベースから読み込まれ、電子メールを送信するのはここ

class MYMailer < ActionMailer::Base 
    def mail(from, to, cc, bcc, subject, message, files=[], sent_at = Time.now) 
    @subject = subject 
    @recipients = to 
    @from = from 
    @cc = cc 
    @bcc = bcc 
    @sent_on = sent_at 
    @body["message"] = message 
    @headers = {} 

    # attache files 
    files.each do |file| 
     attachment file.mimetype do |a| 
     a.body = file.binarydata 
     a.filename = file.filename 
     end 
    end 

    end 
end

は次のとおりです。

attachements = AttachementItem.find(:all) 
MYMailer.deliver_mail("[email protected]", "[email protected]", nil, nil, "Attachement test", "This is just a test", attachements)

次のコードは、JSONを解析してデータベースに格納します。

attachement_json = params[:attachement] 
attachement_json = attachement_json.gsub(/\n/, "\\n") 
attachement = AttachementItem.new.from_json(attachement_json) 
b64data = Base64.decode64(attachement.binarydata) 
attachement.binarydata = b64data 
attachement.save

メールで受け取った添付ファイルはごみです。エラーがクライアント側にあるかどうかわかりませんが、これも調査していますが、Railsコードにエラーがあるかどうかを確認できますか?

ありがとうございました

+0

ファイルを添付するときに 'file.mimetype'とは何ですか?アップロードしたファイルのMIMEタイプを正しく設定していますか?ファイルはデータベースで正しく見えますか?ファイルが電子メールクライアントのガベージであるとはどのように判断していますか? – sarnold

答えて

0

よく私のRailsコードが動作します!私は自分のエラーを見つけました(そこには複数の場所があります)。申し訳ありません:)

+0

OK、どうしてやったの?正しいコードは何ですか? – pjmorse

+0

また、http://xkcd.com/979/ – pjmorse

関連する問題