legacy-knowledge-base
公開されました Jul. 2, 2025

"PortalException "が発生しました:新規Blogs画像追加時に「Unable to get a unique file name(固有のファイル名を取得できません)」が発生する。

written-by

Roberto Díaz

How To articles are not official guidelines or officially supported documentation. They are community-contributed content and may not always reflect the latest updates to Liferay DXP. We welcome your feedback to improve How To articles!

While we make every effort to ensure this Knowledge Base is accurate, it may not always reflect the most recent updates or official guidelines.We appreciate your understanding and encourage you to reach out with any feedback or concerns.

legacy-article

learn-legacy-article-disclaimer-text

問題

  • 再現するための手順
    1. 新しいブログのエントリーを追加する
    2. このブログのエントリに新しいカバー画像を追加する
    3. エントリーを保存する
  • 期待される動作画像はアップロードされます
  • 現在の動作です:エラーがスローされ、ログにこれに似たエラーが見つかりました:
ERROR com.liferay.blogs.web.internal.portlet.action.EditEntryMVCActionCommand - com.liferay.portal.kernel.exception.PortalException: Unable to get a unique file name for image.png in folder 75309953
com.liferay.portal.kernel.exception.PortalException: Unable to get a unique file name for image.png in folder 75309953
at com.liferay.portlet.blogs.BlogsEntryAttachmentFileEntryHelper.getUniqueFileName(BlogsEntryAttachmentFileEntryHelper.java:206)
at com.liferay.portlet.blogs.BlogsEntryAttachmentFileEntryHelper.addBlogsEntryAttachmentFileEntry(BlogsEntryAttachmentFileEntryHelper.java:100)
at com.liferay.portlet.blogs.BlogsEntryAttachmentFileEntryHelper.addBlogsEntryAttachmentFileEntries(BlogsEntryAttachmentFileEntryHelper.java:55)
at com.liferay.blogs.web.internal.portlet.action.EditEntryMVCActionCommand.updateEntry(EditEntryMVCActionCommand.java:548)
at com.liferay.blogs.web.internal.portlet.action.EditEntryMVCActionCommand$UpdateEntryCallable.call(EditEntryMVCActionCommand.java:677)
at com.liferay.blogs.web.internal.portlet.action.EditEntryMVCActionCommand$UpdateEntryCallable.call(EditEntryMVCActionCommand.java:673)
at com.liferay.portal.spring.transaction.TransactionInvokerImpl$CallableMethodInvocation.proceed(TransactionInvokerImpl.java:101)
at com.liferay.portal.spring.transaction.DefaultTransactionExecutor.execute(DefaultTransactionExecutor.java:54)
at com.liferay.portal.spring.transaction.TransactionInvokerImpl.invoke(TransactionInvokerImpl.java:47)
at com.liferay.portal.kernel.transaction.TransactionInvokerUtil.invoke(TransactionInvokerUtil.java:28)
at com.liferay.blogs.web.internal.portlet.action.EditEntryMVCActionCommand.doProcessAction(EditEntryMVCActionCommand.java:192)
at com.liferay.portal.kernel.portlet.bridges.mvc.BaseMVCActionCommand.processAction(BaseMVCActionCommand.java:61)
at com.liferay.portal.kernel.portlet.bridges.mvc.MVCPortlet.callActionMethod(MVCPortlet.java:380)
at com.liferay.portal.kernel.portlet.LiferayPortlet.processAction(LiferayPortlet.java:93)
at com.liferay.portal.kernel.portlet.bridges.mvc.MVCPortlet.processAction(MVCPortlet.java:260)

Environment

  • 7.0+

解決策

  • ブログの添付ファイルは共通フォルダーに保存されます。 そのため、Liferayでは、使用された名前が検出された場合、ファイルに接尾辞を追加して名前の衝突を処理します。
  • とにかく、パフォーマンスの問題を避けるために、この自動生成される名前を50個に制限しています。
  • BlogsEntryLocalServiceImpl#getUniqueFileName メソッドのロジックに基づき、 CheckBlogsUniqueFileNameLogic.groovyのようなスクリプトを実行すると確認できます(Liferayのバージョンによって異なる場合があります。)。
  • この変数を適切なものに調整するだけでいいのです:
    def groupId = [group id]L
    def fileName = "[ファイル名]"
    def folderId = [folder id]L
  • そして、それを実行する。
  • それが終わると、最後に例外を含むプロセスの詳細情報を見ることができます。
  • 例外が発生する前に50個の要素に達してしまった場合は...。
    image (50).png
  • ...すると、ファイル名自動生成の限界に達したことが確認されます。
  • 問題を解決(回避)するためには、未使用の画像を削除するか、今後この名前を使用しないようにすればよいでしょう。
  • 私たちの提案は、衝突を最小限に抑えるために、すべてのケースで最も説明的な画像名を使用するようにすることです。
  • 性能に影響を与えるため、この制限をカスタマイズすることは推奨されません。

追加情報

did-this-article-resolve-your-issue

legacy-knowledge-base