2012-06-12 26 views
7

私はRailsでファイル操作APIを構築しています。別の宝石を使ってファイル操作APIにアクセスする必要があります。 APIはCarrierwaveを使用し、その部分は問題なく動作します。私がやり方を理解できないのは、任意のファイルを取得してgemインターフェースからAPIに渡すことです。JSON APIを使用してCarrierwave経由でファイルをアップロードするにはどうすればよいですか?

Carrierwaveは、そのファイルをFile.open('foo.jpg')の結果またはファイルフィールドのPOSTとして取り出します。私は本当にファイルのシリアル化とそれに沿った送信のどちらを行っているのかは分かりません。

ファイルの内容を取得し、それをJSON経由で渡して投稿できるものにするにはどうすればよいですか?

+0

あなたはAPIは、JSONの代わりに、フォームパラメータとしてものを受け取る意味しますか? –

+0

そうです。 APIはブラウザベースのインターフェイスではなくコマンドラインインターフェイスをサポートするため、JSONの機能を受け取ります。 –

答えて

4

HTMLフォームがファイルをPOSTするとき、実際にはマルチパートリクエストと呼ばれるHTTPの特別な部分が発生します。効果的に、ファイルは要求に「添付」されます。

質問はあなたのapiにJSONをPOSTするために使用しているライブラリによって回答されます。要求にファイルを添付するのはかなり一般的ですが、すべてのライブラリがそれをサポートするわけではありません。

This stack overflow article seems to give some good indications of how to do it.

+0

これは私が達成しようとしていたことを達成するのに最適な方法です。元の質問は悪い前提から始まるように思えます。ファイルはJSONオブジェクトにまったくシリアル化されませんが、プロトコルの全く異なる部分に乗っています。いずれにせよ、このライブラリは私を素晴らしいスタートにしてくれます。もし私がそれがどういう仕組みになっているのだろうと思えば、私はいつもそのソースコードを打つことができます。ありがとう! –

+0

正確に。特に、Base64エンコーディングや他のASCIIエンコーディングを使用してJSONにファイルを埋め込むことはできますが、本当に必要な場合を除き、そのパスはお勧めしません。 –

関連する問題