2016-08-05 12 views
5

Startupクラスの静的ファイルアクセスを既に有効にしているASP.NET Coreアプリケーションのwwwrootフォルダ内の画像フォルダからファイルを提供しようとしています。絶対ファイルパスを相対パスに変換する

HostingEnvironmentサービスでは、wwwrootフォルダへの絶対パスを提供するWebRootPathプロパティが表示されますが、このパスを使用するとブラウザのコンソールに「ローカルリソースを読み込めません」というエラーが表示されます。

localhost +相対パスを使用して私のブラウザからファイルにアクセスすると、画像ファイルを取得できるため、承認に関する問題はありません。

私が今必要とするのは、絶対パスをWebサーバーの相対パスに変換することだけです。お使いのコントローラがWebRootPath財産を読んで、それ

var content = System.IO.File.ReadAllText(_env.WebRootPath + "/images/textfile.txt"); 

に相対ファイル・パスを追加する

private IHostingEnvironment _env; 

     public HomeController(IHostingEnvironment env) 
     { 
      _env = env; 
     } 

更新:あなたはコンストラクタをコントローラに

+0

してください、質問のタイトルにないものをタグ! – Tseng

答えて

4

エラーが表示された場合は、たとえばhref属性など、ビュー内で_env.WebRootPath + "/images/textfile.txt"を使用しようとしているようです。

  • それはあなたのページから発生しているエラー終了file:///C:/Users/PathToYourSite/wwwroot/images/textfile.txtのように見えるURLを要求しようとしているブラウザになってしまいます行います。その詳細についてはon this answerを読むことができますが、moder Chromeのようなブラウザでは、httpプロトコルからファイルプロトコルへのリクエストはデフォルトで無効になっています。

したがって、サーバー側のロジックの一部としてファイルの内容を読みたい場合は、IHostingEnvironmentというアプローチを使用する必要があります。

何が必要なのwwwrootの中であなたのファイルへのリンクを生成し、あなたの意見でそれらを使用する場合しかし、あなたはオプションのカップルがあります

  • がへのパブリックURLを解決するためにIUrlHelperを使用して、 wwwルートの中のファイル。"~/"はwwwrootフォルダーです。あなたがそれを必要なときにその後のhrefのように、それを使用します。

    @Url.Content("~/images/textfile.txt") 
    
  • は直接"~/"で始まるhref属性を持つかみそりビューでアンカーを作成します。 (あなたも、インテリセンスそこに着く)

    <a href="~/images/textfile.txt">Get file from wwwroot</a> 
    
3

wwwrootの内のファイルにアクセスするためには、IHostingEnvironmentを注入/wwwroot/images/textfile.txt内にあるファイルのすべてのコンテンツを読み込みます。

希望する

関連する問題