画像にApp_Dataフォルダに表示されないブラウザ
質問
私設定する画像のURLプロパティをasp像を制御することがApp_Dataフォルダの画像は、ページデザインビューがブラウザです。
<form id="form1" runat="server">
<div>
<asp:Image ID="Image1" runat="server" ImageUrl="~/App_Data/p3.jpg" />
</div>
</form>
そうするか、そしてデザインされたもののイメージです。
解決
App_Data
フォルダは、そのようなので、上のデータベースファイルやデータなどのために予約された特別なフォルダで、のないのウェブ上の任意のコンテンツをレンダリングします。これは仕様であり、かつ意図的と(私の知る限り)を変更することはできません。
あなたのイメージは間違いなくApp_Data
サブフォルダに属していない - /images
フォルダまたはより適切な何かにそれらを置く。
他のヒント
画像はApp_Data
フォルダに格納すべきではありません。これは、など.MDBデータベースファイル、など直接ユーザーに提供してはならないファイル、のために予約されています。
私は、サイトのルートから外れ/Resources
または/Resources/Images
フォルダを作成することになります。
私は反対します。 App_Dataフォルダ内の画像を隠し、独自のHTTPハンドラを作成するとき、あなたはあなたのイメージを確保し、あなたがそれらを表示する前に画像の著作権テキストなどを追加することができます。
私は誰もが取得するwan'tはありませんHIGHRESの写真を持っているし、イメージダウンスケールHTTPハンドラを有し、かつ、いくつかのcopyrighttextに入れたときに私はこれを行います。グレート!
さて、時間...あなたはApp_Dataにフォルダから画像を直接読み込むことはできませんが、あなたはApp_Dataにフォルダから画像ファイルを読み込み、クライアントに返送します、あなた自身のHTTPハンドラを書くことができます。それは、周りの仕事だろうが、一般的には、データのみをアプリケーションが読み取ることができるデータのためのものです。データの読み込みハンドラーを持つことにより、あなたはまだそれらのイメージを返すことができます。
しかし、それは悪い習慣だとあなたは私のために働いているはずだならば、あなたはすぐに解雇されると思います!!!
これは依存します! ;)
App_Data
で画像を保存するための良い理由があります。ユーザーが自分のファイルやロゴをアップロードすることができます状況では、他のユーザーやされ公衆にそれらにアクセスできるよう、これらのファイルを保護しません。
最も重要なこと、それは、サーバー/展開インスタンスごとに異なるファイルを持つ唯一の方法です。
あなたのアプリを展開するとき、あなたが展開構成に「App_Dataにからファイルを除外」有効にすることで、サーバーインスタンスあたりのユーザーによってアップロードされたこれらのファイルを保護することができます。
あなたがurlでこれらのファイルにアクセスしたい場合は、ダウンロードハンドラ、例えばdownloadfile.ashxを使用します。
この情報がお役に立てば幸いです。
コンテンツApp_Dataフォルダの提供することができますが直接的な影響はありません。
直接アクセスできないよび間接することは推奨できません。 で行っています。
しかし追加の仮想パスは可能です。この 質問
と思う三回答しております。
画像を保存の資源のフォルダには、更にグローバル地域れも特別のフォルダと内容にアクセスできるのprogramaticaly.