2015-11-19 5 views
2

J'ai une application mobile qui doit afficher les images qui lui seront envoyées via l'API REST. Comment puis-je transférer des images de l'API? Je développe une API Web ASP.net en utilisant C#.Comment transférer des images via l'API REST

J'ai essayé de convertir l'image en base64 puis de l'envoyer par API sur l'appareil mobile, mais cela me prend beaucoup de temps car je dois envoyer un grand nombre d'images à mon appareil mobile en une fois.

J'ai besoin d'envoyer le fichier d'image avec d'autres données via l'API à l'appareil mobile et un Phonegap Android, puis l'enregistrer en db local pour une utilisation ultérieure. Toute aide serait appréciée.

+0

Vous pouvez générer des liens publics vers les images à partir de votre magasin de données spécialisé (quelque chose comme «Amazon S3» ou «Azure Blob Storage») et ensuite seulement envoyer des liens sur le 'API». – activatedgeek

+0

Mais sur le côté de l'application mobile, je ne veux pas accéder aux images du web, comme l'application est censée fonctionner même hors ligne (sans Internet) – Arti

+0

Donc, vous pouvez avoir un magasin de cache local pour vos images. Mais la première fois, vous devrez aller chercher! – activatedgeek

Répondre

0

Si vous souhaitez envoyer une image ou un fichier via REST Api, il doit être implémenté via la requête Multipart. Veuillez vous référer à here pour faciliter votre travail.

Vous pouvez également utiliser Retrofit pour créer une requête en plusieurs parties.

+0

Je construis l'API dans MVC. – Arti

+0

MVC pour Model View Controller? ou autre chose? – Avi

+0

Oui. Contrôleur de vue de modèle Web API dans ASP.net – Arti

1

Si vous souhaitez envoyer les images avec d'autres données en une seule requête en utilisant base64, c'est le meilleur moyen.

Vous pouvez utiliser gzip pour compresser les données d'image afin de réduire leur taille. Un autre moyen serait d'envoyer les images dans une taille réduite à votre client Android avec une URL à une image de taille complète. Cela vous permet de montrer rapidement les résultats à l'utilisateur, puis de charger les grandes images dans une tâche d'arrière-plan à partir du serveur et de remplacer les petites dans la base de données.

+0

Android n'aura pas accès à inetnet tout le temps. Seulement pendant la première exécution de l'application ou chaque fois que l'utilisateur veut mettre à jour les données (à condition qu'il y ait une connectivité Internet ..), l'api sera appelée qui chargera/mettra à jour les données de la base de données locale mobile. Le chargement de l'image en taille réelle en arrière-plan ne fonctionnera donc pas. :-( – Arti

+0

Ensuite, il n'y a pas d'alternative réelle pour charger toutes les images à la fois Comme je l'ai dit, vous pouvez compresser les images ou utiliser des JPEG avec une qualité inférieure/compression plus élevée pour réduire la taille des fichiers – crysxd