Je suis en train de le faire:Obtenir l'image de l'API, puis le stocker sous forme Azure Storage Blob (erreur d'image)
- Obtenir les utilisateurs de AD à l'aide de Graph Api dans une fonction Azure (C# ou nœud)
- pour chaque utilisateur, obtenir leur photo, en utilisant le graphique Api (dans la même fonction Azure)
- Avec les données de photos, télécharger comme blob Azure Storage
maintenant, j'ai 1 et 2 travail correctement. Mais maintenant, je n'ai aucune idée de la façon de convertir cette chaîne image/jpeg en un blob dans Azure Storage. J'ai beaucoup essayé, j'ai beaucoup étudié mais c'était vraiment difficile.
J'ai essayé d'utiliser
blob.Properties.ContentType = "image/jpeg"
blob.UploadText(imgString);
Mais cela ne fonctionne pas.
Alors mon code ressemble à ceci:
- Je reçois un jeton frais OAuth d'azur (bon pour 3600 sec)
- Get/Utilisateurs de l'API AD Graphique
- Pour chaque utilisateur, je use/user // photo/$ value resource, qui retourne une image/jpeg data.
- De ces données (une chaîne?) J'essaye de blob.UploadText mais il échoue.
La façon dont je reçois les données d'image de GraphApi utilise RestSharp, comme ceci:
var client = new RestClient("https://graph.microsoft.com/v1.0/users/" + email + "/photo/$value");
var request = new RestRequest(Method.GET);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("authorization", "Bearer " + token);
request.AddHeader("content-type", "image/jpeg");
return client.Execute(request);
Je reviens donc un IRestResponse, qui contient quelque chose comme ceci:
response.ContentType //to get the content type
response.Content // to get the body (the image)
blob.UploadText(response.Content);
Et c'est ce que j'essaie de faire, mais ça ne marche pas, le fichier est sauvegardé correctement mais quand vous l'ouvrez, vous ne pouvez pas vraiment voir l'image. Je pense que le problème pourrait être un peu d'encodage, j'ai essayé de définir différents types d'encodage sans succès.
Jetez un oeil à la photo suivante. À droite, j'ai obtenu l'image de Graph Api en utilisant PHP, et j'ai défini l'en-tête en image/jpeg, puis en écho avec les données de l'image et c'est tout. Ça marche. A gauche, c'est la fonction Azure avec javascript ou C#, j'obtiens l'image et quand j'essaye de faire la même chose (montrer dans le navigateur) j'obtiens une chaîne binaire différente et pas d'image sur la page (comme si elle n'était pas données d'image), il semble donc que le problème est l'encodage. J'enregistre ces données binaires sur un fichier blob avec UploadText mais cela ne fonctionne pas.
Toutes les idées?
vous ne pouvez pas obtenir '' Stream' ou byte [] 'partir de l'étape 2? – Mikhail