C# 如何使用.NET Web服务从iphone上传图像

C# 如何使用.NET Web服务从iphone上传图像,c#,iphone,.net,web-services,base64,C#,Iphone,.net,Web Services,Base64,我想使用.NET Web服务上传图像,这将从iphone图像中调用 iphone发送给我的文本格式如下 在哪个数据类型中,我必须转换此数据,然后以图像格式保存 如果你有其他方法,请告诉我 我已尝试转换字节[]中的数据,但它给了我错误。这是我的密码。因为我已经试过了。请帮帮我 [WebMethod] public XmlDocument testuploadimage(string image) { XmlDocument login = new XmlDocum

我想使用.NET Web服务上传图像,这将从iphone图像中调用

iphone发送给我的文本格式如下

在哪个数据类型中,我必须转换此数据,然后以图像格式保存

如果你有其他方法,请告诉我

我已尝试转换字节[]中的数据,但它给了我错误。这是我的密码。因为我已经试过了。请帮帮我

[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;
        }

    }
这就是我得到的错误

Base-64字符串中的无效字符。

谢谢


BHAVIK GOYAL

你所犯的错误是你处境中的一个根本问题

您正在将非Base64字符串传递给Convert.FromBase64String()

查看您发送的链接,iPhone看起来像是在发送带有空格的十六进制字符

您可以选择让iPhone向您发送Base64,或者删除空格并转换iPhone现在发送的内容

  • 是与代码的链接 将十六进制转换为字节[]
  • 是什么基础上的链接64 编码是
  • 是一个描述 十六进制,这是 iPhone正在发送给你
我得到了答案


感谢所有…

您能添加收到的错误消息吗?还有堆栈跟踪吗?@Jonathan我更新时出错了。
[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;
    }

}