2009-07-09 17 views
3

私の無知を許してください。私は正しい方向にポイントを探しています。リンクのURLを隠す

私はダウンロードリンク(pdf)のあるページがあります。 リンクをクリックすると、pdfが新しいページで開きます。 私は、pdfがサーバ上にあるフォルダを見ることができます。 同じフォルダ内の他のファイル名を推測すると、おそらく私は幸運になるかもしれません。 ファイルのいくつかはプライベートなので、私はユーザーがURLからヒントを得ることを望んでいません。 この情報をどうやって隠すことができますか? バックエンドで.net 2を実行しています。メソッドを呼び出してファイルを開くことができますか?

助けてください。私は私を始めさせるために何を検索するか分からない。

ありがとうございます。

私たちは.Net 2バックエンドを持っています。

答えて

12

あなたは、あなたが1ページ、DownloadPdf.aspxを作成することができ、データベースのGUIDを持つ各PDFファイルを関連付けて、それをあなたのファイルシステム上の右のファイルを見つけるためにGUIDを渡し、それをレンダリングすることができます:

Response.Clear(); 
Response.ContentType = "application/pdf"; 
Response.WriteFile(physicalPathToFile); 
Response.End(); 

EDIT

ユーザーにPDFファイルをダウンロードする機能を提供したい場合は、Response.Endの前に、次の行を追加することができます。

Response.AddHeader("content-disposition", "attachment; filename=" + filename); 

ここで、filenameには、物理​​ファイル(または指定したい名前)のあいまいでない名前を指定できます。

+2

さらに、ファイルの名前をguidに変更し、元のファイル名をデータベース内に保持してください。この方法で一意のファイル名を保証し、基本的なファイルのバージョン管理を行うこともできます。 –

1

D.の投稿が100%正しい場合は、さらに1ステップ進んで.resources拡張子でファイルを保存することができます。したがって、IISはfilEを直接処理することはありません。

+1

+1。それは優れた点ですが、app_dataにファイルを保存することで同じことが達成できますあなたがファイルタイプを歪ませる必要はありません(たとえば、管理者としてリモートでサーバをブラウズしているとき、またはあなたが扱っているコンテンツのタイプを知りたいときに便利です) –

+0

はい、私はそれも同様であると信じています。 –