2013-06-16 1 views
0

je le scénario suivant: l'utilisateur utilise une application mobile et peut créer un objet qui stocke les données suivantes:données d'objet de transfert sur HTTP, y compris une image

Nom, qui est une chaîne Adresse, qui est une chaîne Image, qui est prise en utilisant l'appareil photo du téléphone et stockée localement comme une image bitmap.

L'utilisateur peut choisir de stocker ces données dans le serveur principal, qui est un service Web WCF à l'écoute des requêtes HTTP. Je sais que je peux encoder les chaînes d'objet en tant qu'objet JSON et envoyer au service http par voie hertzienne, mais je ne suis pas sûr de savoir comment transférer l'image sur le serveur? Pouvez-vous l'encoder en XML/JSON et l'envoyer avec les chaînes?

L'application est actuellement une application Windows Phone 8 écrite en C#, mais la même application sera écrite pour les appareils iOS dans un proche avenir.

+0

Vous pouvez utiliser une requête HTTP via "mutilpart/form-data" de sorte que vous pouvez télécharger l'image en tant que fichier. Ou vous pouvez simplement encoder l'image en Base64 et la télécharger en tant que chaîne –

+0

Créez un objet POCO qui contient 2 propriétés qui sont Name (chaîne) et Picture (tableau d'octets) maintenant vous pouvez remplir votre POCO avec l'image et le nom puis envoyez-le au serveur. Le code C# simple pour ce qui précède devrait être facile – Rajesh

Répondre

0

Vous devez ajouter la conversion de flux pour chaque image et ajouter les détails à une liste.

côté client.

Stream stream = (Stream)openDialog.File.OpenRead(); 
        byte[] bytes = new byte[stream.Length]; 
        stream.Read(bytes, 0, (int)stream.Length); 
        BitmapImage bmi = new BitmapImage(); 
        using (MemoryStream ms = new MemoryStream(bytes)) 
        { 
         bmi.SetSource(ms); 
         newRow.Thumbnail = bmi; 
       } 

dans votre côté service

string filePath = ConfigurationManager.AppSettings.Get("ImageUploadPath"); 

          if (!Directory.Exists(filePath)) 
          { 
           Directory.CreateDirectory(filePath); 
          } 

          filePath = filePath + "\\" + picture.FileName + "." + picture.FileType; 

          if (picture.FileName != string.Empty) 
          { 
           fileStream = File.Open(filePath, FileMode.Create); 
           writer = new BinaryWriter(fileStream); 
           writer.Write(picture.FileStream); 
          }