まずメインディナー。以下数行のプログラムでWEBのファイル管理機能を利用できます。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="efw" uri="efw" %>
<!DOCTYPE HTML>
<HTML>
<HEAD>
<efw:Client lang="jp"/>
</HEAD>
<BODY>
<efw:elFinder home=""/>
</BODY>
</HTML>
画面のイメージはexplore風です。ドラッグ&ドロップのファイルアップロード、複数ファイル&フォルダのアップロードとダウンロード、右クリックメニューなど結構鮮やかです。
背景
elFinderは結構有名なファイル管理ツールです。javaScriptとphpで作成されています。元家のサイトはこちら。
Javaでそれを利用したい場合、コネクターを作成する必要です。efwは、elFinderのjavaScriptライブラリをカスタマイズして、コネクターを加えて、jspタグの形でjarファイルにまとめました。elFinder元家のサイトに「3rd party connectors」の一つです。
jarを入手
mavenからダウンロードできます。
<dependency>
<groupId>io.github.efwgrp</groupId>
<artifactId>efw</artifactId>
<version>4.07.000</version>
</dependency>
jdk15以上の場合、関連jarが必要です。
<dependency>
<groupId>org.openjdk.nashorn</groupId>
<artifactId>nashorn-core</artifactId>
<version>15.4</version>
</dependency>
efwのelFinderタグ
使い方は簡単です。最小限の書き方は前述のようです。home属性は、WEBアプリのWEB-INF/efw/storageフォルダに対する相対パスです。絶対パスでやりたい場合isAbs属性をtrueにします。
<!--相対パス->
<efw:elFinder home="upload"/>
<!--絶対パス-->
<efw:elFinder home="C:\Windows\Microsoft.NET\Framework64" isAbs="true"/>
elFinderからファイルを削除するとほんとうになくなるので、慎重にしてくださいね。
知っている制限
実プロジェクトの利用実績により知っている制限をいくつか説明したいです。
アップロードファイルの容量
一回は200-300MBぐらいのサイズはアップロードできます。複数回は自由です。ダウンロードもほぼ同じサイズの実績です。ギガファイル便のようにサイズ無視のファイルアップロード&ダウンロードはまだできないです。
elFinder元家の場合、ファイル分割アップロードの技術を利用しているから、もっと大きいサイズをアップロードできるみたいです。大きいサイズ必要であれば、elFinder元家のほうを利用してみてください。それはjavaではなくphpです。
ファイル数の制限
これについて具体的な数字はまだ整理できていないですが、1つのフォルダに大量なファイルがあるとそのサイズをうまく取れなくてエラーが発生します。例えばc:\windowsフォルダをhomeしたらエラーが発生します。elFinder元家の場合、フォルダサイズの取得をやめてエラーを回避しています。
1つフォルダの直下に数千数万ファイルがあると、それを表示するためのJSONデータが巨大になってメモリオーバが発生することも想定です。
説明
APIの詳細は以下のリンクです。
https://github.com/efwGrp/efw4.X/blob/master/help/tag.elfinder.md
絶対・相対パス、保護有無、ホームフォルダの設定、読取り専用フラグの切り替えがメインの属性とメソッドです。絶対パス保護なしにすると、インターネットの場合きわめて危険です。ブラウザーコンソールjavaScript実行の簡易ハッキングを想定して、ホームフォルダ名に「..」を発見したらエラーです。また保護モードで、ホームフォルダと読取り専用フラグを設定するとエラーです。
上記エビデンスのプログラムは以下のリンクから取得できます。
【超便利】タグ1つでwebのファイル管理
【超便利】タグ1つでwebのチャート機能
【超便利】タグ1つでwebのQRコード作成