• ベストアンサー

ログインしないとダウンロード出来なくしたい

お世話になります、よろしくお願いします。 現在、ASP.NET(VB)、PostgresでWebシステムを開発しています。 ログイン後、DBからのデータをCSV形式で生成してダウンロードさせています。 このダウンロードで生成されたファイルがそのままサーバー上に残っていて、フルパスでファイルを指定すると、ログインしなくてもファイルがダウンロード出来てしまいます。 対処法として 1.ログインしないとファイルをダウンロード出来なくする 2.ファイルをダウンロードさせた後にサーバーのファイルを削除する このどちらかでやれるのではないかと考えているのですが、行き詰ってしまいました。どうかご教授下さい。

質問者が選んだベストアンサー

  • ベストアンサー
  • todo36
  • ベストアンサー率58% (728/1234)
回答No.1

CSVファイルを作るのではなく、aspxからレスポンスすればよい。 http://www.ailight.jp/ASPDownload.aspx

radakatu
質問者

お礼

返信が遅くなり申し訳ありません。 ずばり、用件を満たすことが出来ました!本当にありがとうございます! #開発初期の段階でその参考URLは見ていたのですが、良く分かっていなかったみたいです。。。

その他の回答 (3)

回答No.4

お世話になります。 一般的には、 No.1 の todo36 さんが書かれているように Response を操作して CSV ファイルを落とさせる方法がよいと思います。 上記を踏まえたうえで、一般的な方法を書きますと、 1. ログイン画面   認証したら、session にユーザーの   情報を保持するクラスのインスタンス等   を格納。 2. CSV ダウンロード画面   session 上に session にユーザーの   情報を保持するクラスのインスタンス等   が無い場合は、セッションエラー画面か、   ログイン画面へ強制的に遷移させる。 参考になるか解りませんが、 以下のページでの例でも、 Response オブジェクトに対して操作しています。 http://naoko.wankuma.com/designpatterns/designpatterns_0007_builder.html

radakatu
質問者

お礼

回答ありがとうございます。 >Response を操作して CSV ファイルを落とさせる方法 この方法を使い、サーバーにファイルを作ることなくCSVファイルをダウンロードさせることが出来ました。 ユーザー情報をsessionに保持させて、ユーザー情報が無い場合はセッションエラー画面へ強制遷移するようにしています。 ありがとうございました。

  • kokorone
  • ベストアンサー率38% (417/1093)
回答No.3

私も、WEBシステムの開発・担当をしております。但し、言語など 違うため、詳細まではわかりませんが、アドバイスのみです。 1.ログインしないとファイルをダウンロード出来なくする 2.ファイルをダウンロードさせた後にサーバーのファイルを削除する どちらも、必要です。 1はセキュリティ面から、誰でも御社のDBの情報が利用できてしまっては、困りますよね。 2は、後から直接ファイルアクセスを禁止することと、サーバーのファイルスペース節約のため、ダウンロード処理後、ファイルは消しましょう。

radakatu
質問者

お礼

回答ありがとうございます。 >どちらも、必要です。 仰るとおりですね。 CSVファイルをサーバーに生成することなく、クライアントがダウンロード可能となったので 1の場合ファイルが存在しないためダウンロード不能 2も条件を満たすことができました。 これからもアドバイスよろしくお願いします。

回答No.2

 『ログインしなくてもファイルがダウンロード出来てしまいます。』これは、データをサーバの共通フォルダに置き、共通フォルダがクライアントのネットワークで見える形で公開しているのでしょうか? 一例として: (1)ポータルへのログインで認証する。 (2)データ格納先は非公開。 (3)ログイン後WEBページからダウンロード。

radakatu
質問者

お礼

回答ありがとうございます。 No.1様のアドバイスにより、無事解決致しました >データをサーバの共通フォルダに置き データとは生成されたCSVファイルのことでしょうか? CSVファイルの格納先は公開されているので、フルパスさえ知っていれば誰でもファイルにアクセスできる状態でした。

関連するQ&A

  • ダウンロードについて

    ASP.NET(VB.NET)でWebアプリケーションの製作をしています。 トップページからログインさせて、その後サーバーに置いてあるファイル(エクセルファイル)へのリンクを張って、ダウンロードさせています。 ですが、ログインしていなくてもファイルのアドレスを直打ちするとダウンロードが可能となります。 ログインしないとダウンロードできなくする方法はありますか? どうかよろしくご教授下さいませ。

  • ダウンロードダイアログなしでローカル端末にダウンロードするには

    ASPにおいてDBよりデータを抽出し、CSVファイル形式としてローカル端末の指定ディレクトリにダウンロードしたいのですが、ご教授お願いします。本当に困っています!!! ここで問題になるのが 1.ダウンロードダイアログを表示せずにローカル端末の固定のディレクトリにダウンロードしたいということ。 2.ダウンロードするファイルは1度に2,3ファイルあるということです。 ちなみに Response.AddHeader "Content-Disposition","filename=[ファイル名]" Response.ContentType = "application/octet-stream-dummy" ではファイル名指定しかできませんし、一度に2,3ファイルをダウンロードすることもできまん。これから発展させることはできるのでしょうか??違う方法でもいいのでいい案があったらご教授ください!!! よろしくおねがいします!!!!!

  • ASPでCSVファイルを作成しダウンロードさせる

    ASPファイルで、動的にCSVファイルを作成し、クライアントにダウンロードさせたいのですが、実際には、ファイルは作成せずに、ASPで直接、CSVフォーマットのファイルをダウンロードさせているように振舞わせることはできないでしょうか? 手順 クライアント        サーバー あるURL(A.ASP)にアクセス              A.ASPのスクリプトでCSVフォーマットを作成              クライアントに送信(多分、Response.Writeで) ダウンロードダイアログが開く 「A.CSVをダウンロードしますか?」 のような感じ ダウンロード、またはExcelが開く というようなイメージです。 CSVファイルを作ってしまうと、複数のユーザーからほぼ同時に要求があった場合、望むCSVにならない可能性があり、また、毎回ファイル名を変えると、Webサーバー上にCSVファイルが沢山できてしまうため、何とかこの方法でやりたいのですが、何かよい方法はありませんでしょうか? ちなみに次のようなASPファイルをしてみましたが、うまくいきません。 <% Response.Content-Type="application/vnd.ms-excel" Response.Write "1,2" & vbNewLine Response.Write "3,4" & vbNewLine %> また、「vnd.ms-excel」を「oct-stream」でもだめでした。 何かよい知恵をお貸しください。

  • [ASP]CSVダウンロード時に、直接開いた場合のシート名

    お世話になります。 ASPからcsvファイルを動的に生成して(サーバには保存しないで)ダウンロードを実行するという方法は実現できています。 しかし、ダウンロードダイアログが表示された際に、「開く、保存、キャンセル」の中から「開く」を選択すると、Excelが起動しcsvファイルを読み込むのですが、 シート名が「 .csv]ファイル名[1] 」となってしまいます。(余計な文字がくっついてきます。) この余計な文字がシート名に含まれないようにしたいのですが、何かよい方法はないでしょうか。 よろしくお願いいたします。 ◆環境 サーバ:windows2003server クライアント:windowsXP SP2        EXCEL2000         ◆csv生成時の設定 ContentType = "application/x-csv" AddHeader "Content-Disposition" ,  " attachment; filename = AAA20060928.csv"

  • 【緊急】セッション変数を別のサーバーに渡すことはできる?

    うまく説明できないかもしれないですが、説明します。 今、WEBサーバ と DBサーバ があります。 ASPはすべてWEBサーバにデータベースはすべてDBサーバにあります。 WEBサーバからDBはODBCを介して参照しています。 ASPで作ったログインページがWEBサーバ上にあります。 ログインした時、セッション変数を使ってログインし、 また、ある程度時間がたつとセッションが切れてログインページに 戻らせるような仕組みにしていて、全ページにその処理をいれています。 今、実現したいことは ログインページだけをWEBサーバに 置いたままにして、ASP(HTML)ファイルをDBサーバ に移動した後でも動かしたいのです。 (1)WEBサーバ上のセッション変数をDBサーバに渡してやりたいのですが、 可能でしょうか?可能ならばどのようにすればよいでしょうか? ASPで使っている言語はVBScriptです。 WEBサーバにはDBに関係ない、メニューなどだけを置いて DBに関係するページはDBサーバに置きたいのです。 OS WINDOWS2000 使用ブラウザ IE 3,4,5,6 (バージョンは特に今はどれでも構いません) どうか、どなたか手がかりだけでも教えて頂けませんでしょうか? よろしくお願い致します。

  • ASP.NET(C#)におけるファイルダウンロードについて質問させてく

    ASP.NET(C#)におけるファイルダウンロードについて質問させてください。 私は今、webアプリケーションを開発しております。 そこで機能のひとつとして、ボタンを押すと保存ダイアログを表示させ、ファイルをダウンロード させられるようにしております。 その保存ダイアログのファイル名にサーバ側からあらかじめ決められた(クライアント側の)ファイルパスを表示させることは可能でしょうか?方法があればお教え願います。 ※保存先のディレクトリを指定するのが面倒なため。 ファイル名に表示させたい例: C:\test.text C:\TestFile\test.text また、たとえ可能だとしても、クライアント側のパスをサーバが勝手に指定するのは セキュリティ的に問題ありでしょうか? ご教示のほど、よろしくお願いいたします。

  • CSVファイルのダウンロード

    よろしくお願いします。 現在、ボタンを押すと(=CGI実行)フィルターによりCSVファイルが作成されるという様なものを開発しております。 しかし、その出来上がったCSVファイルをそのままダウンロードしたいと言う要望がありまして、そのCGIに組み込めないものかといろいろ調べております。 概要 (1)ボタンを押す(=CGI実行) (2)フィルターによりCSVファイル作成 (3)作成されたファイルをダウンロード という具合で、教えていただきたいのは(3)です((1)(2)は作成済み)。 実際にはCSVファイルは3つできるのですが、これらをまとめてダウンロード・・・というのはムリですよねぇ(第1希望)。 ムリなら、処理の中で圧縮させます(これぐらいはできます)ので、そのファイルをダウンロードさせるというやり方でも構いません(第2希望)。 実現が難しいようであれば実行結果画面に<a href= ~>で貼り付けます。 webサーバー・・・HP-UX web・・・IE CGI開発言語・・・Perl 開発端末・・・windows2000(Tera Term 使用) 以上、情報等お持ちの方いらっしゃいましたら、 よろしくお願いいたします。

    • ベストアンサー
    • CGI
  • WebにてExcelを生成してダウンロード

    VWD ASP.NET(VB) Excel2003 Webサーバー側に雛形Excelを配置し、ユーザーの指定により DB情報をExcelに付加してダウンロードする方法を探しています。 以下のサイトに同じ発想の方がいましたが私はVBしかわかりません。 ユーザの利用は複数が同時に使用することも想定に考えると 以下のプログラムは安全なのかわかりません。 また、リンクが切れていて内容も理解できません。 何方かVBソースコードにて教えてください。 よろしくお願いいたします。 http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=21390&forum=7

  • WEBページからダウンロードする処理

    WEBソフト開発の初心者です。 よくプログラムをダウンロードする機能のあるWEBページをみますが、あれはどうすればいいのでしょうか? 環境 サーバーWindows2000Server IIS5 ASP(VBScript)  別にASPでなくてもいいです。

  • FTPサーバからファイルをダウンロードするには?

    WINDOWS2000、VB6.0、SP5で開発しています。 FTPサーバからファイルをダウンロードするやり方がわからなくて、困っています。 例えば、コマンドボタンを押した時に、指定したファイルをダウンロードしたいのです。 色々と調べてみたのところ、Winsockコントロールを使うとできるかもしれない、 というところまでは分かったのですが、そこからさっぱりです。 今日一日、調べていますがわかりません。 どうか、先輩方のアドバイス、よろしくお願いしますm(_ _)m

専門家に質問してみよう