APIを使用して連絡先イメージをアップロードする

誰かがAPI経由でコンタクト画像をアップロードする方法の簡単な例を教えてもらえますか?私はそれがファイルAPIへの呼び出しを含むが、確かではないと推測している。

私は元のイメージをURLとして持っていますが、URLを参照するだけではなく、CiviCRMに保存します。

素敵なコメントの答えのためのボーナスポイント:)

ありがとう!

ベストアンサー

Contact Image URLは直接 civicrm_contact
テーブルに保存されていますので、画像を表示できるURLがあれば、以下のようにcontact create
APIを直接使用できるはずです。

$result = civicrm_api3('Contact', 'create', array(
  'contact_type' => "Individual",
  'first_name' => "first",
  'last_name' => "last",
  'image_URL' => "",
));

If you’re on version < 5.0, the contact summary page will
render the image only iff the URL is in form of
http://site-name/civicrm/contact/imagefile?photo=imageName.jpg
and your image file should be present in your custom file upload
directory.

連絡先の要約を可能にするパッチ(バージョン5.0に含まれています)がありますURLの
photo パラメータに関係なく、任意のURLイメージを表示することができます。

あなたのローカルファイルシステムにリモートイメージのコピーをダウンロードしてそれを使用したい場合、次の行に沿って何かをすることができます:

$contactId = 123;
$imageName = 'jitendra.jpg';
$path = Civi::paths()->getPath(Civi::settings()->get('customFileUploadDir')) . $imageName;
file_put_contents($path, file_get_contents('https://i.stack.imgur.com/yjnic.jpg'));
civicrm_api3('Contact', 'create', [
  'id' => $contactId,
  'image_URL' => CRM_Utils_System::url('civicrm/contact/imagefile', ['photo' => $imageName], true)
]);

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です