2011-12-30 11 views
-3

私は、ファイルを非公開にして公に再ダウンロードすることができないようにする方法を模索しています。サーバー側のコード(ボタンのような)は、クライアントのプライベートディレクトリから一度だけ取り出すことができます。クライアントが一般にアクセスできないパスからファイルをダウンロードするようにしますか?

これは可能ですか?

フォルダが公開されていても、ファイルがダウンロードされた回数を表示するイベントを発生させる良い方法は、それを追跡してダウンロードに達した後にそれらを削除するサービスを作ることです限界?私は、ファイルへのResponse.redirectを実行してから、ダウンロードされた回数を追跡するロジックを実行することができます。しかし、それはあなたがそれをする方法ですか?

編集:いくつかの掘削後、私は解決策を見つけました。私はあなたの多くがサンプルコードを含めないためにこれをdownvoted持っていることを知っていますが、私はそれが非常にうまく動作するので、私はそれを使用して終了したコードを共有するために戻ってupvoteできれば感謝します。

String FileName = "File.zip"; 
      String FilePath = "C:/Test/" + FileName; //Replace this 
      System.Web.HttpResponse response = System.Web.HttpContext.Current.Response; 
      response.ClearContent(); 
      response.Clear(); 
      response.ContentType = "text/plain"; 
      response.AddHeader("Content-Disposition", "attachment; filename=" + FileName + ";"); 
      response.TransmitFile(FilePath); 
      response.Flush(); 
      response.End(); 
+1

クライアントのサーバーサイトではどこにC#を使用しますか?サーバー側の – rekire

+0

。 –

+0

どのようにデータをホストしていますか? IISまたはWCFでセルフホスト?サーバオプションがあります... – rekire

答えて

0

私は解決策を見つけました。私はあなたの多くがサンプルコードを含めないためにこれをdownvoted持っていることを知っていますが、私はそれが非常にうまく動作するので、私はそれを使用して終了したコードを共有するために戻ってupvoteできれば感謝します。

String FileName = "File.zip"; 
      String FilePath = "C:/Test/" + FileName; //Replace this 
      System.Web.HttpResponse response = System.Web.HttpContext.Current.Response; 
      response.ClearContent(); 
      response.Clear(); 
      response.ContentType = "text/plain"; 
      response.AddHeader("Content-Disposition", "attachment; filename=" + FileName + ";"); 
      response.TransmitFile(FilePath); 
      response.Flush(); 
      response.End(); 
2

ファイルをasp.netジェネリックハンドラを介して、レスポンスストリームに直接書き込むことでフィードします。その後、ファイルへのパブリックアクセスを完全に制御できます。

0

私は実際にこれをやったことがないが、私はそれがどのように行われるかを知っています。

はあなたのウェブサイトのディレクトリがC:\Sites\DanC\www>であると言います。外の世界では、これはwww.DanC.comなどと表示されます。

などのリンク、ボタン、とあなたのダウンロードのためのウェブページを作成しますがdownload.aspxと呼ばれます。

あなたのファイルはこのディレクトリにはありません。あなたのファイルはここにあります:C:\Sites\DanC\data>あなたのdataディレクトリに入るために誰かがwww.DanC.comから1つ上のレベルを得る方法はありません。

これは表示されますか?誰かがあなたのダウンロードリンク(ボタンなど)を起動するたびに

今、あなたのコードがC:\Sites\DanC\data>からファイルを取得し、クライアントにそのサービスを提供します。

あなたのクライアントにデータを提供する方法の良い例は>> HERE <<です。

+0

サンプルサーバーがあればダウンロードできる方法を示したいだけです。あなたが持っているときにコメントをドロップしてください。 –

+0

これは、ファイルをWebブラウザに直接出力する点を除いて、うまくいくはずです。これはPDFや何かストリーミング可能な場合にはうまくいくはずですが、私はユーザーが保存ダイアログを取得するのを探しています。どのようにそれを行うにはどのようなアイデア? –

+0

Dan、このリンクを参照してください:http://www.west-wind.com/weblog/posts/2007/May/21/Downloading-a-File-with-a-Save-As-Dialog-in-ASPNET – jp2code

関連する問題