- PR -

ダウンロードダイアログについて

投稿者投稿内容
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2005-08-15 20:14
クライアントの意識しない場所にダウンロードするというのはできません。
そんなことが簡単にできれば、
悪意のあるサイトがスタートアップフォルダ等に
暗黙的にウィルスを置く等の事ができてしまいます。

通常のブラウザの通常の設定では無理な話ですね。
ActiveXの使用や、専用ブラウザ・JavaWebStart等の使用をお勧めします。

ちなみに、画像ファイルの保存場所をクライアント側のスクリプトで取得できないので、
ActiveXを使ったところで同じ場所にテキストを保存するのは無理ではないでしょうか。
初心者
会議室デビュー日: 2005/08/13
投稿数: 10
投稿日時: 2005-08-15 22:46
かつのり様

ご助言ありがとうございます。

>クライアントの意識しない場所にダウンロードするというのはできません。
>そんなことが簡単にできれば、
>悪意のあるサイトがスタートアップフォルダ等に
>暗黙的にウィルスを置く等の事ができてしまいます。
●やはりそうですよね。
 しかし、なかなか客先は理解してくれないんです。。。
 今一度、説明してみます。
でっち6号
大ベテラン
会議室デビュー日: 2005/01/31
投稿数: 176
お住まい・勤務地: Kawasaki
投稿日時: 2005-08-16 11:16
こんにちは。お疲れ様です。

ダウンロードがWebシステム中の一機能ということですので、
クライアントアプリはブラウザに制限されると考えて良いので
しょうね。
そうすると、現状の選択肢はActiveXコントロールを使用する
しか残っていないと思います。
ActiveXでダウンローダを作ったことはないので、要件を完全に
満たすものが作れるかはちょっとわかりません※が、
まずはセキュリティ上ActiveXコントロールの利用が問題ないか、
また、クライアントへのインストールを強制することが可能か
あたりを議論して妥協点を見つけて下さい。


1.リネームした2ファイルのパスを引数にしてActiveX側の関数呼び出し
2.コモンダイアログを表示して保存先を指定
3.イメージをダウンロードしつつ別セッションでテキストをダウンロード
と言う流れで作れそうな気はします。
いや、感覚的な思いつきですが

あー、この手順だとサーバにリネームした静的ファイル置かなきゃなら
ないなぁ。XMLHTTPあたりを使えば、ストリームでサーバがファイルを
送出する形でも実装できるかも?
いや、これも思いつきですが

普通なら握りつぶせるだけの要素を持った要件だと思いますので、
折衝頑張って下さい。

ちなみにActiveXでやるなら、ZIP圧縮は忘れて下さい。
.Netなどでは確かDLLなしでは解凍が難しかったはずです。
まぅ
会議室デビュー日: 2005/08/19
投稿数: 1
投稿日時: 2005-08-19 14:04
ちょっと的外れかもしれませんが。

前提
・サービスが社内ネットで公開されてる。
・1オペレーションでファイルが取得できれば良い。

というのであれば、
1.ダウンロードボタン押下
2.サーバ側で指定ファイルをサーバ側の共有フォルダへコピーor移動
3.クライアント側で自動的に共有フォルダへ移動
という感じのフローでファイルとしては取得できます。

不要なファイルを見せたくないのであれば、2の処理前に
テンポラリのフォルダを作ればOKです。
他の人のファイルも見せたくないと言うのであれば、ユーザ管理も
組み合わせなきゃまずいですね。
(WebDavとかと組み合わせると良いのかな?)
初心者
会議室デビュー日: 2005/08/13
投稿数: 10
投稿日時: 2005-08-21 10:38
おはようございます。

ご助言を下さった皆様方、ありがとうございます。

客先にはなんとか1回のダウンロードクリック
で2ファイルをダウンロードし、ダウンロード
ダイアログは2回でるということで妥協して頂
きました。

現在は1回のクリックで2回リクエストを飛ばす
ことに四苦八苦しておりますが、なんとか頑張って
みます。

今回はたいへん勉強になりました。
改めてアドバイスくださった方々ありがとうございました。


jk
ベテラン
会議室デビュー日: 2005/08/19
投稿数: 94
投稿日時: 2005-08-21 11:11
方針が決定したようですので横槍ですが。

ActiveXを作成して簡単に出来ると思いますよ。

ダウンロード先がダウンロードごとに変わらないのであれば
保存先は初回のダウンロード時に保存したディレクトリをiniファイルや
レジストリに保存するようにすれかハードコーディングで実現できます。
どこかのディレクトリのサブディレクトリに日付名でディレクトリを作成
なんかも、簡単に実現できると思います。

ActiveXはある程度の知識があればVBやVC++で簡単に作れるとおもいます。

ダウンロードに関する情報。
MFCを使わない場合(Win32SDK)だけで作りたい場合は
Internet〜 という関数がありますのでMSDNを参考にしてください。

## VBなら
http://homepage2.nifty.com/inform/vbmania/source/geturl.htm

## VC++ なら
CInternetConnection CInternetSession CHttpInternetFile
http://frog.raindrop.jp/knowledge/archives/000287.html

などが参考になるかと思います。

1.ダウンロードページにActiveXコントロールを貼り付ける。
2.JavaScript等でActiveXのダウンロードのメソッドを呼び出す。
or
1.ダウンロードページでActiveXにファイル名等のパラメータを渡す。

ダイアログを一つも出さずにダウンロードすることも可能になります。
ただし、ActiveXに署名をしないとインストールできない環境もあるかもしれません。

スキルアップ/キャリアアップ(JOB@IT)