www.dextsolution.com
DEXTUPLOAD
JK
menu toggleリファレンス > dextuploadjk > support > common > JKExtensionUploadFilter

dextuploadjk.support.common
Class JKExtensionUploadFilter

最小サポートバージョン
1.0.0
最小サポート環境
Java 17, Jakarta EE 9+
説明

JKExtensionUploadFilter クラスは、javax.servlet.Filterインタフェースを実装するクラスで、大容量ファイルのアップロード機能を担当します。フィルタ・クラスであるため、Javaサーブレット・コンテナ(Tomcatサーバーなど)によって自動的にロードされ、コード・レベルでの作成や呼び出しなしで大容量ファイルのアップロードを処理します。

DD(web.xml)でJKExtensionUploadFilterフィルタを設定する方法を示します。

# web.xml
<filter>
    <filter-name>extensionUploadFilter</filter-name>
    <filter-class>dextuploadjk.support.common.JKExtensionUploadFilter</filter-class>
    <!-- パラメータの設定を省略 -->
</filter>

<filter-mapping>
    <filter-name>extensionUploadFilter</filter-name>
    <!-- 
    大きなアップロードを処理させたいサーブレットまたはURLをマッピングします。
    <servlet-name>サーブレット名</servlet-name>
    <url-pattern>マッピングURL</url-pattern>
    -->
</filter-mapping>
パラメータの設定

init-param 要素を使用して、ExtensionFileUploadFilter フィルタのパラメータを設定します。

# web.xml
<filter>
    <filter-name>extensionUploadFilter</filter-name>
    <filter-class>dextuploadjk.support.common.JKExtensionUploadFilter</filter-class>
    <init-param>
        <param-name>tempRepository</param-name>
        <param-value>/file/temp</param-value>
    </init-param>
    <init-param>
        <param-name>defaultRepository</param-name>
        <param-value>/file/store</param-value>
    </init-param>
    ...
</filter>
パラメータの種類
パラメータ名 デフォルト 説明
tempRepository (必須)

一時ディレクトリへのパスを設定します。パスはOS環境に基づいた物理的なフルパスでなければなりません。パスの値が '/' またはドライブ文字列で始まらない場合、内部的に Web アプリケーションのルートディレクトリで始まるパスとして認識されます。

defaultRepository (必須)

ファイルを保存するデフォルトのディレクトリパスを設定します。パスは OS 環境に基づく物理的なフルパスでなければなりません。パスの値が '/' またはドライブ文字列で始まらない場合、Web アプリケーションのルートディレクトリから始まるパスとして内部的に認識されます。

autoMakingDirectory false

ファイルを保存する際に、ディレクトリがまだ存在しない場合に作成 するかどうかを設定します(true または false)。ウェブアプリケーションにディレクトリを作成する権限がない場合、エラーがスローされます。

whiteExtensions (空)

アップロード制限 対象ではないファイルの拡張子リストを設定する。 ファイル拡張子のリストは 'jpg,gif,png,docx,...' のように ',' 文字で区切る。

enableCleaner false

大きなファイルをアップロードする際、様々な事情でアップロードが完了しなかった場合、一時的なファイルが残ることがあります。enableCleanerプロパティをtrueに設定すると、内部でファイルクリーナーが実行され、一定間隔(1分)で一時ファイルが削除されます。

timeAgo 0

ファイルクリーナーが削除する一時ファイルの最終更新時刻と現在時刻の差を設定します。たとえば、値を 32 に設定すると、ファイルクリーナーは、最終更新時刻が 32 時間以上前のすべての一時ファイルを削除します。

hour の値のデフォルトは 0 ですが、0 以下の場合は 24 時間に設定されます。

fileCopyOption Channel

ファイルコピーを内部で行う場合のファイルコピー方法を設定します。

Channel、Stream、ScatterGather、MemoryMapping から選択できますが、通常は Channel を使用します。

fileCopyBufferSize 32768

ファイルのコピー時に読み書きするバッファのサイズ (バイト単位) を設定します。

maxFileSize 0

各ファイルのサイズを制限したい場合に、個々のファイルに許容される最大サイズ(バイト単位)を設定する。

デフォルト値は 0 で、これは制限なしを意味する。

maxTotalSize 0

ファイル全体のサイズを制限したい場合に、許容される最大サイズ (バイト単位) を設定します。大きなファイルのアップロードは、個々のファイルサイズの制限が設定されているかのように動作します。(全体の制限なし)

デフォルトは 0 で、これは制限なしを意味します。

loosely
(Not recommended)
false

マルチパートデータの解析レベルを緩めるために設定します。

checksumEnable false

アップロードされたファイルの整合性チェックを行う場合に設定します。完全性チェックは、DEXTUploadX5製品(バージョン3.4.0.0以降)を使用してラージファイルアップロードモードでアップロードされたファイルに対してのみ実行されます。

licenseFilePath (空)

サーバーライセンスファイルのパスを設定します。OS環境に応じた物理的なフルパスである必要があります。

licenseConfigXmlPath (空)

を参照してください。

licenseAuthKey (空)

ドメインライセンスまたは複合ライセンスを使用している場合は、認証キー文字列を設定します。

filterConfigLocation (空)

パラメータ設定値のプロパティファイルへのパスを設定します。

プロパティファイルへのパスは、OS環境に応じた物理的なフルパスである必要があります。パスの値が '/' またはドライブ文字列で始まらない場合、内部的に Web アプリケーションのルートディレクトリから始まるパスとして認識されます。

プロパティファイルによるパラメータ設定

propertiesファイルを使用してJKExtensionUploadFilterのパラメータ設定をロードできるようにサポートします。

# /some/path/dextuploadjk-uploadfilter-sample.properties
dextuploadjk.uploadFilter.tempRepository=/file/temp
dextuploadjk.uploadFilter.defaultRepository=/file/store
dextuploadjk.uploadFilter.autoMakingDirectory=true
dextuploadjk.uploadFilter.maxFileSize=
dextuploadjk.uploadFilter.maxTotalSize=
dextuploadjk.uploadFilter.whiteExtensions=
dextuploadjk.uploadFilter.enableCleaner=true
dextuploadjk.uploadFilter.timeAgo=24
dextuploadjk.uploadFilter.checksumEnable=false
dextuploadjk.uploadFilter.licenseFilePath=

# web.xml
<filter>
    <filter-name>extensionUploadFilter</filter-name>
    <filter-class>dextuploadjk.support.common.JKExtensionUploadFilter</filter-class>
    <init-param>
        <param-name>filterConfigLocation</param-name>
        <param-value>/some/path/dextuploadjk-uploadfilter-sample.properties</param-value>
    </init-param>
</filter>

filterConfigLocation パラメータを使用してプロパティ ファイルへのパスを設定した場合、ExtensionFileUploaderFilter フィルタはターゲット プロパティ ファイルをロードし、デフォルト設定を読み込みます。filterConfigLocation パラメータを宣言しなかった場合は、Web アプリケーションのクラスパスで dextuploadjk/dextuploadjk-uploadfilter-default.properties ファイルを検索し、存在すればそのファイルをロードして設定を取得します。

dextuploadjk-uploadfilter-default.propertiesを作成し、これをWebアプリケーションのclasspathの場所にdextuploadjk/dextuploadjk-uploadfilter-default.propertiesパスでアクセスできるように設定した場合、web.xmlでJKExtensionUploadFilterフィルタを設定するときにパラメータ 使えるという話だ。

# web.xml
<filter>
    <filter-name>extensionUploadFilter</filter-name>
    <filter-class>dextuploadjk.support.common.JKExtensionUploadFilter</filter-class>
    <!-- 
        パラメータ化は必要ありません。
        dextuploadjk/dextuploadjk-uploadfilter-default.propertiesから設定をロードします。
    -->
</filter>

src/main/resources 位置がコンパイル時に出力先に設定されているとすると、プロジェクトの src/main/resources 子に dextuploadjk/dextuploadjk-uploadfilter-default.properties ファイルが存在する場合、classpath の /resources/dextuploadjk-uploadfilter -default.propertiesパスでアクセスできます。 したがって、デフォルトのパラメータ設定のために、src / main / resources / dextuploadjkの場所にdextuploadjk-uploadfilter-default.propertiesファイルを作成することをお勧めします。 そして、WARアプリケーションの場合、デプロイするとdextuploadjk-uploadfilter-default.propertiesファイルがWEB-INF/classes/dextuploadjkディレクトリにあります。 ただし、該当プロジェクトのパッケージング設定で src/main/resources 位置が WEB-INF/classes で指定された場合に該当する。

package-structure

プロパティファイルとweb.xmlの両方にパラメータを重複して設定した場合は、web.xmlパラメータの設定を優先します。