2016-11-18 3 views
0

ローカルのjpgファイル(「C:\ Life \ Banners \ 1.jpg」)があります。
このファイルのアクセシブルなURLを返すにはどうすればよいですか?例えば:
http://MyServer/Banners/1.jpgWEBAPIを使用してサーバーから画像URLを返す方法

私は次のように使用してみました:

HostingEnvironment.MapPath("~/Images/HT.jpg"); 
HostingEnvironment.MapPath("C:\Life\Banners\1.jpg"); 

しかし、それらの両方がnull

私のWebAPIのコントローラは次のようになりますが返されます。

namespace WebServiceAPI 
{ 
    [EnableCors(origins: "*", headers: "*", methods: "*")] 
    [RoutePrefix("api/Banner")] 
    public class BannerController : ApiController 
    { 
     [Route("GetBanner")] 
     [HttpGet] 
     public Banner GetBanner() 
     { 
      return BannerBL.GetBanner(); 
     } 
    } 
} 

public class Banner 
    { 
     public int bannerId; 
     public string url; 
     public string icon; 
     public string link; 
    } 
+0

[ASP.NET MVCコントローラがイメージを返すことはできますか?](http://stackoverflow.com/questions/186062/can-an-asp-net-mvc-controller-return-an-image) –

+1

MVCとWeb APIは非常に似ていることに注意してください。つまり、上記のMVCのソリューションは、ほとんどまたは全く変更されていないWeb APIプロジェクトでも機能するはずです。 –

+0

@PeterB名前 'Server'は現在の –

答えて

0

MVCのアクションメソッドをいつも返信するActionResult t ype、またはそのサブクラスの1つ。
クラスBannerはそのようなサブクラスではなく、MVCがWeb Responseの作成に使用できないタイプのオブジェクトです。

この動作するはずです(例えばMyApiController.csにそれを置く):

[HttpGet] 
public ActionResult GetBanner() 
{ 
    var path = @"C:\Life\Banners\1.jpg"; // The @ allows us to use single backslashes 
    return File(path, "image/jpeg");  // This returns a FileResult object 
} 

そしてURLは次のようになります。

http://MyServer/MyApi/GetBanner 

あなたはこのあなたがそれを統合しようとすることができます作業を取得するとバナークラス。

+0

ありがとう、Fileクラスとは何ですか?どのDLLを使用すべきですか?現在コードがコンパイルされていません –

+0

FileResultを使用すると、クライアントからアクセスできないファイルローカルパスを含む次の応答が返されます { "FileName": "C:\\ Life \\ Banners \\ 1.jpg "、 " ContentType ":" image/jpeg "、 " FileDownloadName ":" " } –

関連する問題