2016-06-24 11 views
0

アップロードした画像をブラウザに表示する際に問題が発生しています。 私はローカルリソースをロードするために許可されていませんエラーファイルパスの代わりにイメージURLを返す方法

取得: ファイル:/// C:/Office%20Data/dummy/AngularJSAuthentication-master/MyCars/MyCar.API/App_Data/Images/p7.jpeg%を20alt =

App_dataのサーバーに画像を保存するために、次のコード行を記述しました。私はこのエラーの理由を得たグーグル後

file:///C:/Sample%20Data/dummy/AngularJSAuthentication-master/MyCars/MyCar.API/App_Data/Images/p7.jpeg 

HTML

<img ng-src="{{motor.FileUploads[0].Path}} alt="Description" /> 

を次のようにDBに保存された

File.Path = Url.Content(string.Format("{0}/{1}", System.Web.HttpContext.Current.Server.MapPath("~/App_Data/Images"), fileName)); 

ファイルのパス。

Basically i need to return back Image URL instead of file path. 

問題: 私は私が角度のクライアントにイメージパスを返すことができるかどうかはわかりませんよ。

誰かが私を導くことができますか?すべての画像がImagesのルートにある場合だけで、ファイル名以外のすべてをドロップ

+0

あなたが使用している

+0

あなたの質問に答えるために質問を更新しました。チェックしてください。 – simbada

答えて

2

完全な物理パスを指定する必要はありません。ブラウザ

File.Path = Url.Content(string.Format("~/App_Data/Images/{0}", fileName)); 

これからの参照が相対URLに

アップデートを返す必要があります:あなたが直接App_Dataにフォルダの内容にアクセスすることができますので、うまく、これは動作しません。あなたは〜/画像が 、それが動作するはずですか

  • はApp_Dataにフォルダ内のファイルを保存フォルダーのいずれかのこれらの方法のApp_Dataにフォルダのうち、画像が好きな

    • 動きをこの近づくが、 を使用してファイルをストリーミングすることができます第二の選択肢のあなたのコントローラの1つの

    最低限のサンプル実装が

    public class UploadsController : Controller 
    { 
        [HttpGet] 
        public ActionResult Image(string fileName) 
        { 
         //!validate file name! 
         return File(Server.MapPath($"~/App_Data/{fileName}"), "image/jpeg"); 
        } 
    } 
    
    のようになります。上のコンテンツ/ファイル結果アクション

    HTMLの場合は<img src="api/uploads/image?filename=temp.jpg" ...

    +0

    この場合、「http:// localhost:26264/App_Data/Images/p5.jpeg」が返されますが、ブラウザは「GET http:// localhost:26264/App_Data/Images/p5.jpeg%20alt = 404見つからない)」HTTPエラー404.8 - 見つかりません 要求フィルタリングモジュールは、hiddenSegmentセクションを含むURLのパスを拒否するように構成されています。 – simbada

    +0

    ああ! App_Dataフォルダに保存されているファイルに直接アクセスすることはできないことを忘れていました。この場合、2つの選択肢があります。私は答えを更新する –

    +0

    ありがとう、あなたの答えを更新してください。私は待っています。 – simbada

    0

    //using System.IO; 
    
    File.Path = Url.Content(string.Format("{0}/{1}", System.Web.HttpContext.Current.Server.MapPath("~/App_Data/Images"), Path.GetFileName(fileName))); 
    

    を更新

    はサムの答えのようになっている必要があります。

    File.Path = Url.Content(string.Format("~/App_Data/Images/{0}",Path.GetFileName(fileName))); 
    
    +0

    私はあなたに多くを得ていない。基本的には、私のApp_Data/ImagesフォルダはWeb Apiプロジェクトの下にあり、Angular Clientは異なるプロジェクトの下にあります。私が言っていることを理解してもらいたいと思います。 – simbada

    +0

    私は理解していないと思います。ファイルが 'AppData'にアップロードされている場合、これはうまくいくでしょう。 – Crowcoder

    +0

    'Server.MapPath'はあなたに物理的な場所を与えるはずですか? https://msdn.microsoft.com/en-us/library/system.web.httpserverutility.mappath(v=vs.110).aspx –

    関連する問題