- PR -

複数のファイルを強制的にダウンロード

投稿者投稿内容
NA(-_-)MI
常連さん
会議室デビュー日: 2003/10/30
投稿数: 32
投稿日時: 2005-10-14 11:54
ボタンをクリックすることで、
サーバにある複数のファイルをクライアントの指定の場所に強制的にダウンロードさせるプログラムを作成したいと思っています。
過去ログから難しそうだというのは分かったのですが、どうにかできないか模索中です。

現状、Excelファイルだけですが、どうにか複数ファイルをダウンロードする仕組を作成してみました。(以下、JavaScriptソース)
------------------------------------------------------------------------
var objExcelApp = new ActiveXObject("Excel.Application");
objExcelApp.Workbooks.Open("http://(サーバ名)/(パス名)/(ファイル名)",0,true);
objExcelApp.ActiveWorkbook.SaveAs("d:\\(ファイル名)");
objExcelApp.ActiveWorkbook.Close();
objExcelApp = null;
------------------------------------------------------------------------
これだとエクセルファイルであれば、複数ファイルを指定の場所に保存可能です。

現在以下のことで悩んでいます。
 ・ マクロ付きエクセルの場合、開いたときに実行されてしまう。
 ・ エクセルファイル以外の場合、同じような方法がないか?


何かヒントとなるような情報でもあれば是非お願いします!!
がるがる
ぬし
会議室デビュー日: 2002/04/12
投稿数: 873
投稿日時: 2005-10-14 12:06
どもです。がると申します。
んっと…真っ向からの否定的見解で大変に恐縮ではあるのですが。

NA(-_-)MIさんの希望されている挙動は、複数の観点から
「無理」でもあり「危険」でもあります。

まず第一に、HTTPというのは基本的に「サーバ側の挙動」
を中心に規定されているものであって、クライアント側が
最終的にどのような挙動をするのかについては規定がない
です。

また、「クライアントの指定の場所に強制的にダウンロードさせる」
という挙動はセキュリティ上限りなく危険であるために、
そういった手段はまず大抵用意されません。
# 用意されるとどこかから「これは脆弱性だ」と叩かれて
# 結局NGになります。

どういった経緯でそのような仕様になったのかは不明ですが。
全力で仕様変更することをお勧めいたします。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2005-10-14 12:32
JavaScriptでは無理でしょう。
IEでサポートされているActiveXでのファイル操作では、
テキストファイルまでしか操作できません。

XMLHTTPでバイナリを取得しても、
今のIEではADODB.Streamの使用が許可されていませんので、
バイナリをローカルのファイルシステムに落とすのは無理です。

VBやVC++等でActiveXコントロールを作成するのはいかがですか?

#正直、がるがるさんと100%同じ意見です。
#設計の見直しをするのが一番かと。
NA(-_-)MI
常連さん
会議室デビュー日: 2003/10/30
投稿数: 32
投稿日時: 2005-10-14 13:09
ご意見ありがとうございます。

イントラネットのシステムで、
Webを使って毎月いくつかのファイルを支店に配布するようなことを考えています。
信頼済みサイトにすることは可能だったのでどうにかならないかと思った次第です。

ASPやASP.NETでのアプリはいくつか作成したことがありますが、
ActiveXコントロールを作ったことがなかったもので。。

ActiveXコントロールを検討してみます。

ありがとうございました。

一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2005-10-14 13:57
引用:

NA(-_-)MIさんの書き込み (2005-10-14 13:09) より:
Webを使って毎月いくつかのファイルを支店に配布するようなことを考えています。



Webにする必要があるんですか?
NA(-_-)MI
常連さん
会議室デビュー日: 2003/10/30
投稿数: 32
投稿日時: 2005-10-14 14:08
引用:

一郎さんの書き込み (2005-10-14 13:57) より:
Webにする必要があるんですか?



・クライアントにソフトをインストールしたくない
・現在使っているWebのグループウェアと連携した業務プログラムとしたい
という要件でWebになりました。

他に良い案があれば教えてください。
mio
ぬし
会議室デビュー日: 2005/08/25
投稿数: 734
お住まい・勤務地: 神奈川県
投稿日時: 2005-10-14 14:26
「必ずダウンロードしてください」という決まりを作れば、通常どおりのユーザ確認つきダウンロードでいいと思うんですが。
ダウンロードしてなかったら、それはその支店の問題なんだし。
NA(-_-)MI
常連さん
会議室デビュー日: 2003/10/30
投稿数: 32
投稿日時: 2005-10-14 14:37
5ファイルを同じ場所に格納してもらい、
そのうちの一つ(エクセル)を実行することで
クライアントで単体のプログラムを実行させる仕組です。

現在はフロッピーで配布しているのですが、
情報セキュリティ対策でフロッピーの使用禁止にするためにWebにしようとしています。

ユーザには保存場所を意識させたくないので、
ユーザ確認付きは避けたいところなのです。
PC初心者も多いのでできるだけ「ボタンを押すだけ」のような仕組を考えています。

ご意見ありがとうございます。
少ない頭でもう少し考えてみます。

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