コンテンツの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_id
をassets_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コミュニティにご参加ください。