[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends:00036] Re: JAVA でクライアントのディスクにファイル書き込みは出来るか



えんどうです。

> 1.クライアントのWeb画面の「グラフ作成」ボタンを押す
> 2.UNIX上にあるプログラムを呼び出す
> 3.呼び出されたプログラムがDBからデータを読み込み、
>    X-Yグラフ用のCSVデータを作成する
> 4.作成されたCSVデータをクライアント機に転送する
> 5.転送されたデータをクライアント機のローカルディスクにセーブする

1〜5までは CGI でも Java Servlet でも書けますよね。
HTTPサーバーがいつもやっている処理です。

4のときに HTTP ヘッダーの Content-Type を application/octet-stream とか、
application/vnd.ms-excel とかにセットしてやれば良いです。

この際、ファイル保存ダイアログは必ず表示されます。

ファイル保存ダイアログの表示を抑止して、ユーザーが気づかないうちに
ファイルを保存することはセキュリティ上出来なくしてあります。

これができてしまうと、ユーザーが知らないうちに、ウイルスでもなんでも
保存できてしまうことになります。

> 6.エクセルを自動起動させ、5で得たデータのX-Yグラフを自動作成する

これをやるにはセキュリティ的に危険な操作が必要です。

通常Webからこういうことは行いません。

Web側からの操作で、クライアント側アプリケーションが勝手に動いてしまった
ら危険だからです。

グラフを表示すれば良いだけなら、
サーバー側で画像を生成してその画像を表示させれば良いのでは。

アプレットはダウンロード元サーバーと通信できるので、
「数値データをサーバーから受け取りグラフを表示するアプレット」を
使う方法も考えられます。

> ローカルディスクにセーブするところなのですが、Javaのアプレットやプログラムで
> このようなことは可能なのでしょうか

アプレットは通常、ローカル資源(ファイル、プリンターなど)に
アクセスできないので無理です。

上述のように Servlet なら可能ですが、ファイル保存ダイアログを回避するこ
とはできません。

(たとえ出来たとしても、やるべきでない)

-- 
ENDO Yasuyuki <yasuyuki@xxxxxxxxxxxx>
http://www.ss.iij4u.or.jp/~eyasuyuk/ (Personal/Japanese Only)
http://www.javaopen.org/jfriends/ (Japanese Only)