Загрузка XML прямо на FTP - PullRequest
0 голосов
/ 14 января 2011

Я поместил это прямо под кнопкой:

            XmlDocument doc = new XmlDocument();
            XmlElement root = doc.CreateElement("Login");
            XmlElement id = doc.CreateElement("id");
            id.SetAttribute("userName", usernameTxb.Text);
            id.SetAttribute("passWord", passwordTxb.Text);
            XmlElement name = doc.CreateElement("Name");
            name.InnerText = nameTxb.Text; 
            XmlElement age = doc.CreateElement("Age");
            age.InnerText = ageTxb.Text;
            XmlElement Country = doc.CreateElement("Country");
            Country.InnerText = countryTxb.Text;
            id.AppendChild(name);
            id.AppendChild(age);
            id.AppendChild(Country);
            root.AppendChild(id);
            doc.AppendChild(root);

            // Get the object used to communicate with the server.  
            FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://users.skynet.be");
            request.Method = WebRequestMethods.Ftp.UploadFile;
            request.UsePassive = false;
            // This example assumes the FTP site uses anonymous logon.
            request.Credentials = new NetworkCredential("fa490002", "password");
            // Copy the contents of the file to the request stream.  
            StreamReader sourceStream = new StreamReader();
            byte[] fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd());
            sourceStream.Close();
            request.ContentLength = fileContents.Length;
            Stream requestStream = request.GetRequestStream();
            requestStream.Write(fileContents, 0, fileContents.Length);
            requestStream.Close();
            FtpWebResponse response = (FtpWebResponse)request.GetResponse();
            response.Close(); 

            MessageBox.Show("Created SuccesFully!");
            this.Close();

, но я всегда получаю ошибку пути чтения потоков, что мне нужно разместить там?meening, создание учетной записи и когда я нажимаю кнопку, xml файл сохраняется в ftp: //users.skynet.be/testxml/ имя файла от usernameTxb.Text + ".xml».

Ответы [ 2 ]

2 голосов
/ 14 января 2011
  1. Измените URL на конкретное имя файла, в котором вы хотите сохранить свой XML.
  2. Код отправки:

            using ( Stream s = request.GetRequestStream() )
            {
                doc.Save( s );
            }
            MessageBox.Show( "Created SuccesFully!" );
    
1 голос
/ 14 января 2011

Строка ниже не указывает на файл или поток:

StreamReader sourceStream = new StreamReader();

РЕДАКТИРОВАТЬ

Ниже я подробно остановился на том, что опубликовал @dzendras.Если это поможет вам, примите ответ @ dzendras.

        XmlDocument doc = new XmlDocument();
        XmlElement root = doc.CreateElement("Login");
        XmlElement id = doc.CreateElement("id");
        id.SetAttribute("userName", usernameTxb.Text);
        id.SetAttribute("passWord", passwordTxb.Text);
        XmlElement name = doc.CreateElement("Name");
        name.InnerText = nameTxb.Text;
        XmlElement age = doc.CreateElement("Age");
        age.InnerText = ageTxb.Text;
        XmlElement Country = doc.CreateElement("Country");
        Country.InnerText = countryTxb.Text;
        id.AppendChild(name);
        id.AppendChild(age);
        id.AppendChild(Country);
        root.AppendChild(id);
        doc.AppendChild(root);

        //Request needs to be in the format: ftp://example.com/path/file.xml or ftp://example.com/file.xml
        FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://users.skynet.be/" + usernameTxb.Text + ".xml");
        //Specify that we're uploading a file
        request.Method = WebRequestMethods.Ftp.UploadFile;
        request.UsePassive = false;
        request.Credentials = new NetworkCredential("fa490002", "password");

        //Get raw access to the request stream
        using (Stream s = request.GetRequestStream())
        {
            //Save the XML doc to it
            doc.Save(s);
        }

        //Push the request to the server and await its response
        FtpWebResponse response = (FtpWebResponse)request.GetResponse();
        //We should get a 226 status code back from the server if everything worked out ok
        if (response.StatusCode == FtpStatusCode.ClosingData){
            MessageBox.Show("Created SuccesFully!");
        }else{
            MessageBox.Show("Error uploading file:" + response.StatusDescription);
        }
        response.Close();

        this.Close();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...