2

SendGrid からメールを正常に受信し、そのデータを処理できます。私の問題は、電子メールの添付ファイルです。

添付ファイルごとに投稿されたものを見ると、次の行に何かが表示されます。

"attachment12"=>#<ActionDispatch::Http::UploadedFile:0x00000008a793f8 
                  @original_filename="image036.png", 
                  @content_type="image/png", 
                  @headers="Content-Disposition: form-data; 
                            name=\"attachment12\";
                            filename=\"image036.png\"\r\n
                            Content-Type: image/png\r\n", 
                  @tempfile=#<File:/tmp/RackMultipart20120620-35076-1xav4k1>
                >

ではなく

Array
(
  [attachment1] => Array
    (
      [name] => Upload.csv
      [type] => text/csv
      [tmp_name] => /tmp/phpo34iHI
      [error] => 0
      [size] => 76
    )
)

表示されている Parse API で引用されているもの ここにリンクの説明を入力してください 明らかに、Rails はいつものようにエレガントです。

ただし、私の質問は次のとおりです。

  1. ファイルはどこにあり、暗黙のうちにダウンロードされた場所ですか? 見つからない(こうなったら心配)

私は実際にActionDispatch::Http::UploadedFileを読んでいます.docによると、params['attachment12'].readを実行できるはずです

私の調査結果を投稿します


  1. 本番環境は Heroku なので、DB、Mongo、S3 などのコンテナにファイルを保存する必要があります。
  2. ファイルは実際にはsendgridにあると推測していますが、サポートは私の質問を理解せず、解析APIに戻ります! おそらく URL があると思いますが、彼らのサポートがあったため、私はそれを最後までたどることができませんでした。不運にも。
4

2 に答える 2

2

ファイルは実際にはサーバーに POST されますが、ActionDispatch::Http::UploadedFile作業する必要があります。クラスの説明を見ると、利用できるものがいくつかあることがわかります。

original_filename明らかに属性ですが、実際にコンテンツを読み取って保存するために使用する.readか、使用しているgemに一時ファイルを直接渡すことができます。

使用しているアップロード ソリューションの種類 (ペーパークリップ、キャリアウェーブ) があれば、教えていただければ、もう少しサポートできます。

于 2012-06-20T12:18:55.233 に答える
1

はい、ファイルは実際にはすでにサーバーにアップロードされており、 のtempfile属性に保存されていますUploadFile。以下を使用して、完全なファイル パスにアクセスできます。

params['attachment12'].tempfile.to_path.to_s

ソース: 'ActionDispatch::Http::UploadedFile' インスタンスから FileBlob を取得する方法は?


明確にするために、プロセスのこの時点では、ファイルは実際には SendGrid のサーバー上にありません。それらはすでに投稿されており、サーバーのどこかに保存されています (おそらく/tmpディレクトリ内)。

于 2012-06-20T15:18:43.097 に答える