2017-07-06 10 views
0

APIから画像を取得し、File()メソッドを使用してDOMに戻そうとしています。IRestResponseを「image/jpg」ファイルに変換する

ここで私がこれまで持っているものだが...

HomeController.cs

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     return View(); 
    } 

    public ActionResult ImageFromPath() 
    { 
     var client = new RestClient("http://{{MYIPADDRESS}}/cgi-bin/snapshot.cgi?channel0="); 
     var request = new RestRequest(Method.GET); 
     request.AddHeader("postman-token", "random-postman-token"); 
     request.AddHeader("cache-control", "no-cache"); 
     request.AddHeader("authorization", "Digest username=\"MYUSERNAME\", realm=\"MYENCRYPTEDPASS\", nonce=\"LONGSTRING\", uri=\"/cgi-bin/snapshot.cgi?channel0\", response=\"RESPONSESTRING\", opaque=\"\""); 
     IRestResponse response = client.Execute(request);(response.RawBytes); 

     return File(response, "image/jpg"); 
    } 
} 

ここでの唯一の問題は、return文のエラー、responseショー

から変換することができないということです'RestSharp.IRestResponse'から 'byte []'へ

ここ

私はローカルファイルシステムから画像を引っ張ったときに、それは簡単だったと働いていたが、私の作業コードはHomeController.cs

public ActionResult ImageFromPath(string path) 
{ 
    var ms = new MemoryStream(); 
    using (Bitmap bitmap = new Bitmap(path)) 
    { 
     var height = bitmap.Size.Height; 
     var width = bitmap.Size.Width; 

     bitmap.Save(ms, ImageFormat.Jpeg); 
    } 

    ms.Position = 0; 
    return File(ms, "image/jpg"); 
} 

のためだったここで私は私のフロントエンド(Index.cshtml)でそれを引っ張った方法です:

<img src="@Url.Action("ImageFromPath", new { path = Request.MapPath("~/img/1.jpg") })" /> 
+0

この行は私には見えません... 'IRestResponse response = client.Execute(request);(response.Content);' – maccettura

+0

また、 '.Content'の代わりに' .RawBytes'が必要でしょう – maccettura

+0

@maccettura yesしかし、私が持っている主な問題は、すべてを返す方法です。 Fileとして返そうとすると問題が発生します。少なくとも、現在。 – NoReceipt4Panda

答えて

1

ここでこの行:

return File(response, "image/jpg"); 

IRestResponse(RestSharpのタイプ)タイプのresponseを渡しています。

組み込みのMVCファイルメソッドでRestSharpが認識されるのはなぜですか? File()takes a byte array and a string MIME type

試してみてください。

return File(response.RawBytes, "image/jpg"); 

RawBytesは、あなたのHTTPリクエストからの生のレスポンスのバイト配列です。 APIがイメージのバイト配列を返す場合、これがファイルメソッドに渡す必要があります。

+1

優れたキャッチ!ご協力いただきありがとうございます :) – NoReceipt4Panda

関連する問題