APIで取得したレコードから、ファイルフィールドのfileName、urlを取得し、bodyに表示させたいと考えております。 取得したレコードのファイルフィールドの情報は、コードブロック「ファイルフィールド」の通りです。 こちらを活用して、コードブロック「エラーコード」のようなコードを記載してみたところ、.fileNameや.urlが原因でエラーが発生しております。 今回、fileNameとurlを取得し、リンクをクリックすることによってファイルのダウンロードができる機能を実装したいのですが、ダウンロードに必要な情報を取得することができていない状況です。 ①fileNameとurlの取得方法 ②①を活用したファイルダウンロードの方法 上記、2点についてご教授いただけますと幸いです。
file(…ファイルフィールドの識別名)[{createdAt=xxxxxx, fileName=xxx.txt, fileSize=xx, fileKey=xxx, url=xxx}]
※response_data…APIの取得結果 ※file…ファイルフィールドの識別名 <th:block th:each="items:${cp.result.value['response_data']['items']}"> <th:block th:each="fileDetail:${items.file}"> <p th:text="'添付データ: ' + ${fileDetail.fileName}"></p> <p th:text="'添付データ: ' + ${fileDetail.url}"></p> </th:block>
コメント
■ファイルフィールドのurlについて レコード取得APIで取得しているファイルフィールドのurlは、 ファイルダウンロード用APIを叩くためのurlなので、画像のパスではございません。 bodyに渡したurlをクリックするとファイルがダウンロードされるものではないので、ご注意ください。 ■複数ファイルのダウンロードについて ファイルダウンロード実行ページを作成し、ダウンロード実行ページのURLパラーメータにレコードIDおよびファイルキーをつけた別タブリンクを作成いただく実装になります。 【ファイルダウンロード実行ページの処理】 1.PHPでレコードIDおよびファイルキーを元にファイルダウンロードAPIを実行 2.ダウンロードAPIでレスポンスされたデータをbase64形式データに変換してThymeleafに渡す 3.JavaScriptでThymeleafに渡された値をファイル化し、ダウンロード処理をページ表示時に実行する形で作成 ※ レコードIDおよびファイルキーが流出した場合にだれでもダウンロードできてしまうので、アクセス制御を入れることを推奨いたします。 ▼APIメソッドごとのサンプルコードまとめ Record File https://knowledge.spirers.jp/article/development/detail/5503 ▼ファイルをダウンロード APIリファレンス https://docs.spiral-platform.com/api/#operation/downloadFile ■APIで取得した情報をbodyに表示する方法 複数ファイルのダウンロードの処理のイメージでファイル名をファイルダウンロード実行ページのURLにする形で記載いたしました。
<th:block th:each="items:${cp.result.value['response_data']['items']}"> <a th:each="fileDetail:${items.file}" th:href="|ファイルダウンロード実行ページURL?filekey=${fileDetail.url}&recordid=${items['_id']}|" th:text="|ファイル名: ${fileDetail.fileName}|"></a> </th:block>
ナレッジ
向上チーム
1ファイルのみをダウンロードすることを想定したものですが、 サンプルプログラムを用意しております。 よろしければ、ご参照の上お試しいただけますと幸いです。 ▼ver.2 で DB に登録されているファイルをダウンロードするサンプルプログラム https://knowledge.spirers.jp/article/development/detail/1514