force.com SOAP APIでコンテンツ(ContentVersion)上げるのは普通にレコード作るだけで良くて

実データもBase64エンコードしたバイナリをVersionData項目に入れるだけですごく簡単。

 

force.com REST APIでも通常のCRUDと同じようにできるかと思ったが、

バイナリデータをアップロードするには結構面倒くさいみたいなので共有しまっす。

 

リファレンスを読むとmultipart/form-data形式で送らないとダメっぽい。

以下はphp(curl使用)のサンプル

 

phpのcurlライブラリ使ってんだから

本文ベタ打ちせずに、もうちょっと簡単に作れないかと思ったけどダメな感じでした。

 

multipart/form-dataで送るにはcurlのPOSTデータを配列にすれば良いんだが

ファイル以外のContent-Typeを指定できないっぽくて

force.com REST API ではblob形式のファイルアップロードは項目部分を

application/jsonとかapplication/xmlに指定しないとNGレスポンスが返って来る仕様なので

curlライブラリではどうやらダメっぽいです。

 

ここのContent-Type指定できさえすれば、もうちょい直感的でわかりやすいんだけどなー。

 

ということで、サンプルみたいに素直にHeader指定して本文作って送っちゃった方が良さげっす。

たいしたコード量じゃないし…。

 

force.com REST APIでのコンテンツアップロードに関する詳細はこちらから↓

http://www.salesforce.com/us/developer/docs/api_rest/index_Left.htm#CSHID=dome_sobject_insert_update_blob.htm%23inserting_a_contentversion|StartTopic=Content%2Fdome_sobject_insert_update_blob.htm%23inserting_a_contentversion|SkinName=webhelp

 

コンテンツの項目の詳細は以下のリンクから↓

http://www.salesforce.com/us/developer/docs/api/Content/sforce_api_objects_contentversion.htm