2011-06-06 44 views
0

我想上傳使用.NET webservices的圖片,並且會從iphone圖片中調用該圖片。如何從iphone上傳圖片並使用.NET webservices

iphone發給我的文本格式就是這樣。

http://d8768157.u118.c6.ixwebhosting.com/iphoneimg/image.txt

在其中的數據類型,我必須轉換該數據,然後保存在圖像格式。

如果您有其他方法,請告訴我。

我試圖轉換這個數據在字節[],但它給我錯誤。這是我的代碼。對於我所嘗試過的。請幫助我。

[WebMethod] 
    public XmlDocument testuploadimage(string image) 
    { 
     XmlDocument login = new XmlDocument(); 
     XmlDeclaration dec = login.CreateXmlDeclaration("1.0", null, null); 
     login.AppendChild(dec); 
     XmlElement root = login.CreateElement("CreateUser"); 
     login.AppendChild(root); 
     try 
     { 

      string actFolder = Server.MapPath("~/iphoneimg/"); 
      string imgname = DateTime.UtcNow.ToString().Replace(" ", "").Replace("AM", "").Replace("PM", "").Replace("/", "").Replace("-", "").Replace(":", "") + ".png"; 

      Bitmap map; 

      using (MemoryStream stream = new MemoryStream(Convert.FromBase64String(image))) 
      using (FileStream fs = File.Create(actFolder + imgname)) 
      { 
       map = (Bitmap)Image.FromStream(stream); 
       map.Save(fs, System.Drawing.Imaging.ImageFormat.Gif); 
      } 

      XmlElement root1 = login.CreateElement("uploaded"); 
      root1.InnerText = "true"; 
      root.AppendChild(root1); 
      XmlElement root2 = login.CreateElement("path"); 
      root2.InnerText = "http://d8768157.u118.c6.ixwebhosting.com/iphoneimg/" + imgname; 
      root.AppendChild(root2); 

      return login; 
     } 
     catch (Exception ex) 
     { 
      throw ex; 
     } 

    } 

這是I M獲得

無效字符在鹼-64串的錯誤。

感謝

BHAVIK GOYAL

+0

能否請你加你得到錯誤信息?堆棧跟蹤以及? – jonathanpeppers 2011-06-06 16:28:14

+0

@Jonathan我已更新錯誤。 – 2011-06-06 16:30:59

回答

1
[WebMethod] 
public XmlDocument testuploadimage(string image) 
{ 
    XmlDocument login = new XmlDocument(); 
    XmlDeclaration dec = login.CreateXmlDeclaration("1.0", null, null); 
    login.AppendChild(dec); 
    XmlElement root = login.CreateElement("CreateUser"); 
    login.AppendChild(root); 
    try 
    { 

     string actFolder = Server.MapPath("~/iphoneimg/"); 
     string imgname = DateTime.UtcNow.ToString().Replace(" ", "").Replace("AM", "").Replace("PM", "").Replace("/", "").Replace("-", "").Replace(":", "") + ".Png"; 

     byte[] imageBytes = Convert.FromBase64String(image.Replace(" ","+")); 
     MemoryStream ms = new MemoryStream(imageBytes, 0, imageBytes.Length); 

     // Convert byte[] to Image 
     ms.Write(imageBytes, 0, imageBytes.Length); 
     System.Drawing.Image image2 = System.Drawing.Image.FromStream(ms, true); 
     image2.Save(actFolder + imgname); 


     XmlElement root1 = login.CreateElement("uploaded"); 
     root1.InnerText = "true"; 
     root.AppendChild(root1); 
     XmlElement root2 = login.CreateElement("path"); 
     root2.InnerText = "http://d8768157.u118.c6.ixwebhosting.com/iphoneimg/" + imgname; 
     root.AppendChild(root2); 

     return login; 
    } 
    catch (Exception ex) 
    { 
     throw ex; 
    } 

} 

我得到了答案......

感謝所有....

0

你得到的錯誤是你的情況的一個基本問題。

您正在將一個非Base64字符串傳遞給Convert.FromBase64String()。

看着你發送的鏈接,iPhone看起來像是發送帶有空格的十六進制字符。

您的選擇是讓iPhone向您發送Base64,或者刪除空格並轉換iPhone正在發送的內容。

  • Here與代碼轉換 十六進制爲byte []的鏈接。
  • Here是Base64 編碼的鏈接。
  • Here是一個鏈接,描述了 十六進制,這是iPhone發送給您的 。