J'essaie de tirer une image à partir d'une API et de revenir au DOM via la méthode File()
.Conversion de IRestResponse en fichier "image/jpg"
Voici ce que j'ai jusqu'à présent ..
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");
}
}
Le seul problème ici, est que l'erreur sur la déclaration de retour, response
montre
ne peuvent pas convertir 'RestSharp.IRestResponse' à 'byte []'
Quand je tirais l'image du système de fichiers local, il était plus facile et travaillé, ici était mon code de travail pour 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");
}
Voici comment je tirais dans mon extrémité avant (Index.cshtml
) :
<img src="@Url.Action("ImageFromPath", new { path = Request.MapPath("~/img/1.jpg") })" />
Cette ligne me regarde ... 'IRestResponse response = client.Execute (demande); (response.Content);' – maccettura
Aussi, vous voulez probablement '.RawBytes' au lieu de' .Content' – maccettura
@maccettura oui , mais le principal problème que j'ai est de savoir comment tout retourner. Essayer de revenir en tant que fichier me donne des problèmes. Au moins, actuellement. – NoReceipt4Panda