ファイルを更新する

ファイルを更新する

ご覧のページは、お客様の利便性のために一部機械翻訳されています。また、ドキュメントは頻繁に更新が加えられており、翻訳は未完成の部分が含まれることをご了承ください。最新情報は都度公開されておりますため、必ず英語版をご参照ください。翻訳に問題がある場合は、こちらまでご連絡ください。

ファイルの更新は、作成する

よりも少し複雑です。 これは、更新操作がファイルのメタデータとコンテンツを処理する方法によるものです。 ファイルのコンテンツのみを更新するには、ファイルの既存のメタデータも提供する必要があります。 そうしないと、更新操作でメタデータが失われる可能性があります。 しかし、その反対は真実ではありません。 コンテンツを再提供せずにファイルのメタデータを変更できます。 このような更新では、ファイルのコンテンツがファイルの新しいバージョンに自動的にコピーされます。 これを覚えやすくするために、ファイルを更新するときは次の規則に従ってください。

  • 常にすべてのメタデータを提供します。
  • ファイルの内容は、変更する場合にのみ提供してください。

DLAppService は、ファイルの更新に使用できる3つの updateFileEntry メソッドがあります。 これらのメソッドは、ファイルコンテンツのタイプのみが異なります。 各メソッドをクリックして、そのパラメーターの詳細な説明を含むJavadocを表示します。

これらの方法を使用するときは、次のことに注意してください。

  • 元のファイルのタイトルと説明を保持するには、これらのパラメーターを updateFileEntry指定する必要があります。 それらを省略すると、既存のタイトルと説明が削除されます。

  • ユーザーが指定する場合は ヌル (例えば、ファイルの内容の代わりに、 バイトファイル、または ある)、更新が自動的にファイルの既存のコンテンツを使用しています。 これは、ファイルのメタデータを更新する場合にのみ行います。

  • majorVersion パラメーターに false を使用すると、更新によりファイルのバージョンが 0.1 増加します(たとえば、 1.0 から 1.1)。 あなたが使用している場合は 、真の 更新インクリメント次のファイルのバージョン、このパラメータに .0 の値(例えば、から 1.02.01.12.0、等)。

ファイルを更新するには、次の手順に従います。 これらの手順の例では、 InputStreamを含む updateFileEntry メソッドを使用していますが、必要に応じて他のメソッドに例を適用できます。

  1. DLAppServiceへの参照を取得します。

    @Reference
    private DLAppService _dlAppService;
    

詳細については、入門チュートリアルの「サービスリファレンス 取得 」のセクションを参照してください。

2 updateFileEntry メソッドの引数を設定するために必要なデータを取得します。 エンドユーザーから送信されたデータでファイルを更新するのが一般的であるため、リクエストからデータを抽出できます。 この例では、 UploadPortletRequest および ParamUtilを使用してこれを行いますが、任意の方法でデータを取得できます。

   long repositoryId = ParamUtil.getLong(uploadPortletRequest, "repositoryId");
   long folderId = ParamUtil.getLong(uploadPortletRequest, "folderId");
   String sourceFileName = uploadPortletRequest.getFileName("file");
   String title = ParamUtil.getString(uploadPortletRequest, "title");
   String description = ParamUtil.getString(uploadPortletRequest, "description");
   String changeLog = ParamUtil.getString(uploadPortletRequest, "changeLog");
   boolean majorVersion = ParamUtil.getBoolean(uploadPortletRequest, "majorVersion");
  
   try (InputStream inputStream = uploadPortletRequest.getFileAsStream("file")) {
  
       String contentType = uploadPortletRequest.getContentType("file");
       long size = uploadPortletRequest.getSize("file");
  
       ServiceContext serviceContext = ServiceContextFactory.getInstance(
               DLFileEntry.class.getName(), uploadPortletRequest);
   }

リポジトリIDとフォルダIDの取得の詳細については、リポジトリとフォルダの指定に関する 入門チュートリアルの セクションを参照してください。 ServiceContext詳細については、チュートリアル ServiceContextについて参照してください。

3 前の手順のデータを使用して、サービス参照の updateFileEntry メソッドを呼び出します。 この例は、前のステップのtry-with-resourcesステートメント内で実行することに注意してください。

   try (InputStream inputStream = uploadPortletRequest.getFileAsStream("file")) {
  
       ...
  
       FileEntry fileEntry = _dlAppService.updateFileEntry(
                               fileEntryId, sourceFileName, contentType, title,
                               description, changeLog, majorVersion, inputStream, size,
                               serviceContext);
   }

このメソッドは FileEntry オブジェクトを返します`この例では、後で使用するために変数に設定します。 ただし、これを行う必要はありません。

この例の完全なコードは、Liferay DXPの EditFileEntryMVCActionCommand` クラスの `updateFileEntry` メソッドにあります。 このクラスは、Documents and Media APIを使用して、Documents and Mediaアプリがサポートするほぼすべての `FileEntry` アクションを実装します。 また、この `updateFileEntry` メソッドと、残りの `EditFileEntryMVCActionCommand`には、Documents and Mediaアプリの特定のニーズに合う追加のロジックが含まれていることに注意してください。

関連トピック

ファイルを作成する

ファイルを削除する

フォルダーとファイルの移動

« エンティティの更新フォルダーの更新 »
この記事は役に立ちましたか?
0人中0人がこの記事が役に立ったと言っています