メインコンテンツまでスキップ

コンテンツのbulk_upsert APIで画像・ファイル項目の更新はできますか?

コンテンツのbulk_upsert APIで画像・ファイル項目の更新は可能です。

注意

以下の項目のみ更新できます。GCS・S3・Vimeo項目の更新には対応していません。

  • 画像(KurocoFilesにアップロード)
  • ファイル(KurocoFilesにアップロード)

zipファイルの用意

bulk_upsert APIでファイル項目を更新するには、zip形式のファイルを用意する必要があります。

任意の名称でフォルダを作成し、その直下に更新対象のファイルを配置してください。ファイル名には任意の半角英数字を設定できます。

.
`- assets
|- File1.png
|- PdfFile.pdf
`- Image.png

作成したフォルダをzip形式で圧縮します。

.
|- assets # 作成したフォルダ
`- assets.zip # assetsフォルダを圧縮したzipファイル

Files::uploadを利用したファイルアップロード

Files::uploadのAPIを利用して、先ほど作成したZIPファイルをアップロードします。詳しい手順は、APIを使ったファイルのアップロードについてをご参照ください。

// Files::uploadのレスポンス
{
"file_id": "files/temp/*.zip",
"errors": []
}

完了したら、以下のようなリクエストボディをTopics::bulk_upsertにPOSTします。

Files::uploadのレスポンスに含まれるfile_idassets_fileに、設定したいファイルの名称をlistの各項目(ファイルまたは画像項目)に指定してください。

{
"assets_file": {
"file_id": "files/temp/*.zip" // Files::uploadのレスポンスに含まれるfile_id
},
"list": [
{
"topics_id": 1,
// ...
"file_field": { "file_nm": "File.png" } // zipファイル内のファイル名
},
{
"topics_id": 2,
// ...
"file_field": { "file_nm": "PdfFile.pdf" }
},
{
"subject": "New Content",
// ...
"file_field": { "file_nm": "Image.png" }
}
]
}
注意
  • file_fieldの部分はご自身の拡張項目のID(ext_X)かslugに変更してください。

カスタム処理でのアップロード

カスタム処理からbulk_upsertを呼び出す場合は、Files::uploadのAPIを利用できないため、ファイル操作系のプラグインを利用してファイルをアップロードします。

以下は、ファイルマネージャの/files/ltdディレクトリに配置したassets.zipファイルをカスタム処理でアップロードする例です。

{rcms_hash var='temp_name' data='bulk_upsert_assets' key=$smarty.now|strval}
{assign var='temp_assets_path' value="/files/temp/`$temp_name`.zip"}
{put_file path=$temp_assets_path files_path="/files/ltd/assets.zip"}

{assign_array var='body' values=''}

{* assets_file *}
{assign_array var='body.assets_file' values=''}
{assign var='body.assets_file.file_id' value=$temp_assets_path|trim:'/'}

{* list *}
{assign_array var='body.list' values=''}
{assign_array var='content' values=''}
{assign var='content.topics_id' value=1}
{assign_array var='content.file_field' values=''}
{assign var='content.file_field.file_nm' value='File.png'}
{assign var='body.list.' value=$content}

{* POST Topics::bulk_upsert *}
{api_internal var='response' method='POST' endpoint='/rcms-api/1/topics/bulk_upsert' queries=$body member_id=$smarty.session.member_id}
注意
  • value=1の部分は更新したいコンテンツIDに置き換えてください。
  • file_fieldの部分はご自身の拡張項目のID(ext_X)かslugに変更してください。
  • File.pngはアップロードしたファイルの名前に変更してください。
  • /rcms-api/1/topics/bulk_upsertの部分はご自身のエンドポイントに変更してください。セキュリティが動的アクセストークンに設定されたAPIである必要があります。

関連ドキュメント


サポート

お探しのページは見つかりましたか?解決しない場合は、問い合わせフォームからお問い合わせいただくか、Slackコミュニティにご参加ください。