- - PR -
複数のファイルを強制的にダウンロード
«前のページへ
1|2|3
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-10-15 22:04
全部いいとこだけ取り、は出来ない、ってことかも。
| ||||
|
投稿日時: 2005-10-16 01:19
LZHであれば、自己解凍形式にできますので、それであればUNLHAのような解凍ソフトを クライアントにインストールすることなく 指定フォルダにダウンロードすることが 可能ですね。 あるいは、インストールシールドのようなインストーラ作成ソフトで、5つのファイルを "インストール"するexeファイルを作成しそれをダウンロード&実行してもらうというの もテですね。 | ||||
|
投稿日時: 2005-10-17 15:08
WSHでの方法を元にJavaScriptで作ってみましたので サンプルソースを載せておきます。 --------------------------------------------------------------------- //定数宣言 var adTypeBinary = 1; var adSaveCreateNotExist = 1; var adSaveCreateOverWrite = 2; //ボタンを押したときにサーバからダウンロードする function button_click(){ httpToLocal("http://(サーバ名)(パス名)(ファイル名)", "C:\temp\(ファイル名)"); httpToLocal("http://(サーバ名)(パス名)(ファイル名)", "C:\temp\(ファイル名)"); } //ダウンロード処理 function httpToLocal(asSource, asDest){ var oHTTP = new ActiveXObject("Msxml2.XMLHTTP"); oHTTP.Open("GET", asSource, "False"); oHTTP.Send(); var Stream = new ActiveXObject("Adodb.Stream"); Stream.Type = adTypeBinary; Stream.Open(); Stream.Write(oHTTP.responseBody); Stream.Savetofile(asDest, adSaveCreateOverWrite); } --------------------------------------------------------------------- まだ中身については詳しく調べていませんが、 とりあえず動作確認までできました。 確かにこんなサイトがWeb上にあったらアクセスが怖くなります。 ActiveXを自動で実行させることはしてはならないと再認識します。 WEBで使用しているグループウェアの1機能として追加したいために WEBを採用しました。ダウンロード状況などをデータベースに登録し、 各支店の利用状況もその中で確認したいなどの要件もありました。 「お客様の要件」がWEBへのこだわりです。 他にも色々な案を出していただき、ありがとうございました。 みなさんのおかげで、どうにか前に進むことができると思います。 みなさんのレスには感謝・感激です。 また何かありましたらよろしくお願いいたします!! | ||||
|
投稿日時: 2005-10-17 19:07
折角解決したところで申し訳ないですが、少々突っ込みを。
ADODB.Streamを使用するとかかれてますが、 対象のお客さんの環境で動く事が確認されていますか? ADODB.StreamをIEから起動できないようにするパッチが WindowsUpdateで提供されています。 レジストリのエントリを修正すれば起動するようになりますが、 ADODB.Streamの実行をブラウザで許すというのは 脆弱性によってスクリプトの実行ができた場合に、 ウィルス等のインストールが可能になる事になります。 特定のサイトだけっていうわけにはいかず、 全てのサイトを閲覧する時も関係してくる問題です。 ですので、 ・脆弱になるので他の業務システム以外は見ない ・WindowsUpdateでADODB.Streamの無効化パッチを今後一切適応しない と言う条件をお客さんに提示する必要があると思います。 ちなみに、クライアント環境による影響を受けにくい方法として、 ActiveXコントロールがあります。 ローカルのファイルシステムにアクセスするコントロールを作成し、 CABファイルに纏めてからサーバに配置して、 クライアントにはOBJECTタグでロードさせます。 Flashプラグインみたいに署名付きにすると完璧ですね。 私が以前作成した時には署名はつけませんでしたが。 最後に参考までに。 http://support.microsoft.com/default.aspx?scid=kb;ja;870669 | ||||
|
投稿日時: 2005-10-17 19:38
鋭いツッコミありがとうございます!!
気になって確認してみましたが、 自分の端末には既に起動できないようなレジストリ設定になっていました。 しかし、実行できるみたいです。。 何故実行できるかはもう少し調べてみたいと思います。 ActiveXコントロールを使用する方法ですが、 1から作成する場合の参考になるページはないでしょうか? 今のところVisualStudio2003を使って、 新規→CABプロジェクトでいいのかな?と手探りで進行中です。 ではでは。 | ||||
|
投稿日時: 2005-10-20 20:40
このコードは、HTMLに埋め込んだものですよね。 スクリプト部分を分離させて、HTMLファイルと同じところに拡張子vbs(down.vbsなど)で 保存します。 そして、HTMLからwindows.openでdown.vbsを開くようにします。 (たとえば、onclickで呼び出すようにすればいいと思います。) ダウンロードのメッセージが出ますが、ここで「開く」をクリックします。 そうすると、down.vbsが実行され、複数のファイルをダウンロードすることができます。 さきほど、その方法でやってみて成功しました。 | ||||
|
投稿日時: 2005-11-02 19:26
レジストリ変更せずに
ADODB.StreamをIEから起動する方法を見つけたのでご報告です。 インターネットオプション → セキュリティ → レベルのカスタマイズ にて 「スクリプトを実行しても安全だとマークされていないActiveXコントロールの初期化とスクリプトの実行」 という項目を有効にする この方法だと信頼済みサイトのみに適用可能なので セキュリティも保てるかと思います。 ご報告でした。 |
«前のページへ
1|2|3