как загрузить изображение с iphone и с помощью веб-сервисов .NET - PullRequest
0 голосов
/ 06 июня 2011

Я хочу загрузить изображение с помощью веб-сервисов .NET, и оно будет вызываться из образа iphone.

формат текста, который мне отправляет 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;
        }

    }

это ошибка, которую я получаю

Недопустимый символ в строке Base-64.

Спасибо

БХАВИК ГОЯЛ

Ответы [ 2 ]

1 голос
/ 10 июня 2011
[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 голосов
/ 06 июня 2011

Ошибка, которую вы получаете, является фундаментальной проблемой вашей ситуации.

Вы передаете не-Base64 строку в Convert.FromBase64String ().

Просматриваете отправленную вами ссылкуiPhone выглядит так, как будто он отправляет шестнадцатеричные символы с пробелами.

Вы можете либо iPhone отправить вам Base64, либо удалить пробелы и преобразовать то, что отправляет iPhone сейчас.

  • Здесь - это ссылка с кодом, преобразующим Hex в байт [].
  • Здесь - это ссылка на кодировку Base64.
  • Здесь - это ссылка, описывающая шестнадцатеричное число, которое отправляет вам iPhone.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...