2009-05-22 5 views
0

Je travaille sur une application mobile sur .net. Ceci est une application Windows Mobile. Je suis confronté à un problème dans cette application que je veux télécharger une image/fichier à l'URL/serveur donné. Beaucoup de classes de téléchargement n'utilisent pas comme Webclient, WebRequest, WebResponse. J'ai utilisé HttpWebRequest, qui ne se connecte pas avec le serveur. S'il vous plaît, n'importe qui peut m'aider sur la façon de télécharger les images sur une URL donnée dans Windows Mobile 6 in .net.Télécharger l'image sur le serveur de l'application mobile

Merci d'avance.

+0

Quel code avez-vous avez jusqu'à présent? –

+0

* Exact * dupe (à la lettre) de: http://stackoverflow.com/questions/897120/upload-images-in-windows-mobile-6-in-net – ctacke

Répondre

0

Hey jeter un oeil à ce code pour le téléchargement à l'image Shack:

Vous pouvez le modifier à utiliser avec un autre site Web en utilisant simplement Fiddler pour changer la demande web

public class Uploader 
    { 

     public string UploadFileToImageShack(object oFileName) 
     { 
      try 
      { 
       string fileName = oFileName as string; 
       string contentType = null; 
       CookieContainer cookie = new CookieContainer(); 
       NameValueCollection col = new NameValueCollection(); 
       col["MAX_FILE_SIZE"] = "3145728"; 
       col["refer"] = ""; 
       col["brand"] = ""; 
       col["optimage"] = "1"; 
       col["rembar"] = "1"; 
       col["submit"] = "host it!"; 
       List<string> l = new List<string>(); 
       switch (fileName.Substring(fileName.Length - 3, 3)) 
       { 
        case "jpg": 
         contentType = "image/jpeg"; 
         break; 
        case "peg": 
         contentType = "image/jpeg"; 
         break; 
        case "gif": 
         contentType = "image/gif"; 
         break; 
        case "png": 
         contentType = "image/png"; 
         break; 
        case "bmp": 
         contentType = "image/bmp"; 
         break; 
        case "tif": 
         contentType = "image/tiff"; 
         break; 
        case "iff": 
         contentType = "image/tiff"; 
         break; 
        default: 
         contentType = "image/unknown"; 
         break; 
       } 

       string resp; 
       col["optsize"] = "resample"; 
       resp = UploadFileEx(fileName, 
               "http://www.imageshack.us/index.php", 
               "fileupload", 
               contentType, 
               col, 
               cookie); 
       return resp; 


      } 
      catch (Exception ex) 
      { 
       return ""; 
      } 
     } 



     public static string UploadFileEx(string uploadfile, string url, 
      string fileFormName, string contenttype, System.Collections.Specialized.NameValueCollection querystring, 
      CookieContainer cookies) 
     { 
      if ((fileFormName == null) || 
       (fileFormName.Length == 0)) 
      { 
       fileFormName = "file"; 
      } 

      if ((contenttype == null) || 
       (contenttype.Length == 0)) 
      { 
       contenttype = "application/octet-stream"; 
      } 


      string postdata; 
      postdata = "?"; 
      if (querystring != null) 
      { 
       foreach (string key in querystring.Keys) 
       { 
        postdata += key + "=" + querystring.Get(key) + "&"; 
       } 
      } 
      Uri uri = new Uri(url + postdata); 


      string boundary = "----------" + DateTime.Now.Ticks.ToString("x"); 
      HttpWebRequest webrequest = (HttpWebRequest)WebRequest.Create(uri); 
      webrequest.CookieContainer = cookies; 
      webrequest.ContentType = "multipart/form-data; boundary=" + boundary; 
      webrequest.Method = "POST"; 


      // Build up the post message header 
      StringBuilder sb = new StringBuilder(); 
      sb.Append("--"); 
      sb.Append(boundary); 
      sb.Append("\r\n"); 
      sb.Append("Content-Disposition: form-data; name=\""); 
      sb.Append(fileFormName); 
      sb.Append("\"; filename=\""); 
      sb.Append(Path.GetFileName(uploadfile)); 
      sb.Append("\""); 
      sb.Append("\r\n"); 
      sb.Append("Content-Type: "); 
      sb.Append(contenttype); 
      sb.Append("\r\n"); 
      sb.Append("\r\n"); 

      string postHeader = sb.ToString(); 
      byte[] postHeaderBytes = Encoding.UTF8.GetBytes(postHeader); 

      // Build the trailing boundary string as a byte array 
      // ensuring the boundary appears on a line by itself 
      byte[] boundaryBytes = 
        Encoding.ASCII.GetBytes("\r\n--" + boundary + "\r\n"); 

      FileStream fileStream = new FileStream(uploadfile, 
             FileMode.Open, FileAccess.Read); 
      long length = postHeaderBytes.Length + fileStream.Length + 
                boundaryBytes.Length; 
      webrequest.ContentLength = length; 

      Stream requestStream = webrequest.GetRequestStream(); 

      // Write out our post header 
      requestStream.Write(postHeaderBytes, 0, postHeaderBytes.Length); 

      // Write out the file contents 
      byte[] buffer = new Byte[checked((uint)Math.Min(4096, 
            (int)fileStream.Length))]; 
      int bytesRead = 0; 
      while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0) 
       requestStream.Write(buffer, 0, bytesRead); 

      // Write out the trailing boundary 
      requestStream.Write(boundaryBytes, 0, boundaryBytes.Length); 
      WebResponse responce = webrequest.GetResponse(); 
      Stream s = responce.GetResponseStream(); 
      StreamReader sr = new StreamReader(s); 

      return sr.ReadToEnd(); 
     } 


    } 
0

Il est example code sur CodeProject que réimplémente WebClient.UploadFile « avec plus » en utilisant seulement HttpwebRequest et les amis, qui à première vue, il ressemble utilise des fonctionnalités qui sont disponibles dans le Compact Framework. Vous pouvez vérifier le code fonctionne avec le cadre complet sur un PC et utiliser un outil comme Fiddler pour vérifier ce qui se passe sur le fil., Avant de compiler pour le Compact Framework.

+0

Je suis vraiment désolé mais comme vous l'avez dit, je vérifié cela et trouvé cette solution n'est pas pour l'application Windows Mobile. Ce n'est pas en cours d'exécution. – Deepak

+0

Qu'est-ce qui empêche cela de compiler avec le Compact Framework? Alors que je n'ai pris qu'un coup d'oeil rapide, je ne pouvais rien voir qui ne soit pas dans le Compact Framework ... –

Questions connexes