Je suis en train de passer une image retournée à partir d'une API sous la forme de bytes
à l'extrémité avant d'ajouter à la page.C# à JS: Comment ajouter img src au format d'image base64 (RawBytes)?
I NE PAS ne pas enregistrer l'image dans le système de fichiers, en la faisant passer de cette façon.
La réponse est retournée, mais je ne sais pas comment terminer cette procédure.
Voici mon appel API:
[HttpGet("api/GetCamImages")]
public async Task<HttpResponseMessage> ImageFromPath()
{
RestClient client = new RestClient("http://MYIPADDRESS/cgi-bin/snapshot.cgi?channel=0");
RestRequest request = new RestRequest(Method.GET);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("authorization", "Basic YLKHSouHSSUGh2");
TaskCompletionSource<IRestResponse> taskCompletion = new TaskCompletionSource<IRestResponse>();
RestRequestAsyncHandle handle = client.ExecuteAsync(request, r => taskCompletion.SetResult(r));
RestResponse restResponse = (RestResponse)(await taskCompletion.Task);
StringContent myContent = new StringContent(Convert.ToBase64String(restResponse.RawBytes));
var response = new HttpResponseMessage(System.Net.HttpStatusCode.OK);
response.Content = myContent;
response.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("image/png");
return response;
}
Mes js:
$http.get('/api/GetCamImages').then(function (response) {
console.log(response.data);
$("#imgContainer").append('<img src="data:image/png;base64,' + response.data.content + '" />');
});
Le console.log
ci-dessus affiche ceci:
Pour confirmer - Je me rends compte que l'img src ci-dessus vient cependant [object, Object]
, ce qui explique pourquoi l'image ne s'affiche pas. Mais comment feriez-vous cet appel entier avec succès?
Certes, vous devez r eturn une chaîne base64: 'Convert.ToBase64String (restResponse.RawBytes)' - vous ne pouvez pas insérer de données binaires brutes dans 'data: image/png; base64,' –
@AlexK. J'ai changé pour 'response.Content = new StringContent (restResponse.RawBytes);' mais il y a toujours une erreur 'can not convert by byte [] en string' qui apparaît pour 'restResponse.RawBytes'. – NoReceipt4Panda
'new StringContent (Convert.ToBase64String (restResponse.RawBytes));'? –