- ベストアンサー
ダウンロード後の保存ディレクトリ選択の制御
- WEBからCSVファイルのダウンロード時に表示される「保存」ダイアログで、固定のディレクトリを表示し、他のディレクトリの選択を制限する方法を探しています。
- サーバ側はPHPで制御は難しいため、ActiveXなどを使用して実現できるのかどうかについて教えてください。
- また、ダイアログのデフォルトの保存先を「デスクトップ」ではなく任意のディレクトリに指定する方法についても知りたいです。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
ActiveXを考えているということなのでIE限定でも大丈夫なのでしょうか? そういうことならXMLHttpとFileSystemObjectを使ってスクリプトを組んで自動的にダウンロードしてしまうのが簡単だと思います。簡単なサンプルスクリプトを作ってみました。 <html> <head> <title>Download test</title> <script type="text/javascript"> <!-- function download(){ var url = location.protocol + "//" + location.host + "/xxx.php"; var savePath = "C:\\temp\\xxx.csv"; var xmlHttp = new ActiveXObject("MSXML2.XMLHttp"); xmlHttp.open("GET", url, false); xmlHttp.send(); var fso = new ActiveXObject("Scripting.FileSystemObject"); var stream = fso.createTextFile(savePath, true); stream.write(xmlHttp.responseText); stream.close(); alert("ダウンロード完了"); } // --> </script> </head> <body> <input type="button" value="Download" onClick="download();"> </body> </html> 適当に変更して試してみて下さい。 ちなみにActiveXの警告が出ますが、サイトを信頼済みサイトに登録して、信頼済みサイトのレベルのカスタマイズで「スクリプトを実行しても安全だとマークされていないActiveXコントロールの初期化と実行」を有効にすると警告が出なくなります。
その他の回答 (3)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
#2>クライアント側にはある帳票用のアプリケーションがあり、保存先のディレクトリ(この場合はC:\temp)は必ずあるという設定です。 そういうことなら、帳票用アプリケーションからファイルのゲットをするようにしたらどうでしょう
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
もし、C:\temp が無かったらどうなるのでしょうか?
補足
クライアント側にはある帳票用のアプリケーションがあり、保存先のディレクトリ(この場合はC:\temp)は必ずあるという設定です。
- linus1974
- ベストアンサー率19% (71/370)
なぜ、そういうちょっと変わったような運用 になるのか補足説明があると、まったく違う 解決法を誰かが教えてくれるかもしれません。
補足
すみません。補足いたします。 環境はイントラネットで、WEBで表示した帳票データを、 ダウンロードし、クライアントアプリケーションで、データを使用するということが目的です。 クライアント側のアプリケーションは、固定のディレクトリ内のCSVファイルを読み込み、そこにあるCSVデータを使用するというものです。 なので他のディレクトリに保存されてしまうとすぐにデータが使えなく、いちいちファイルを選択するのが面倒くさいということなので、ダウンロードしたCSVファイルを固定のディレクトリに保存したいということです。 ダウンロードにこだわらず、 クライアントからのリクエストを受けたら、WEBサーバ側でCSVファイルを作成し、ローカルに保存させる、もしくわ送信するといった方法はありますでしょうか?
お礼
サンプルご提示ありがとうございます。 指定するphpにはダウンロードレスポンスを返す機能を実装しておけばよいのでしょうか? でも貴重な情報ありがとうございます。 もう少し自分で調べてみます。ありがとうございました。