отправьте xml-файл обработчику, используя http-post - PullRequest
0 голосов
/ 19 октября 2011
    protected void UploadFile(object sender, EventArgs e)
    {
        if (fileUpload.HasFile)
        {
            if (fileUpload.PostedFile.ContentType == "text/xml")
            {
                Stream inputstream = fileUpload.PostedFile.InputStream;

                byte[] streamAsBytes = (ConvertStreamToByteArray(inputstream));

                string stringToSend = BitConverter.ToString(streamAsBytes);

                xmlstream.Value = stringToSend;

                sendXML.Visible = true;
                infoLabel.Text = string.Empty;
/*
                string path = Server.MapPath("GenericHandler.ashx");
                WebClient wc = new WebClient();
                wc.UploadFile(path,"POST", fileUpload.PostedFile);
                 Something like this maybe? But is there any way to do it without saving the file?            */

            }
            else
            {
                infoLabel.Text = "Please select an XML file";
                sendXML.Visible = false;
            }
        }
    }

Это мой текущий код.XML-файл сохраняется в скрытом поле в виде шестнадцатеричной строки и отправляется через jquery ajax.Но было бы намного лучше отправить сам файл и обработать его в обработчике.Это возможно?

Ответы [ 2 ]

0 голосов
/ 19 октября 2011

Попробуйте следующий код, я не проверял его, но он должен работать, вместо строки передайте байт [] методу

    private string PostData(string url, byte[] postData)
    {
        HttpWebRequest request = null;
        Uri uri = new Uri(url);
        request = (HttpWebRequest)WebRequest.Create(uri);
        request.Method = "POST";
        request.ContentType = "application/x-www-form-urlencoded";
        request.ContentLength = postData.Length;
        using (Stream writeStream = request.GetRequestStream())
        {
            writeStream.Write(postData, 0, postData.Length);
        }
        string result = string.Empty;
        using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
        {
            using (Stream responseStream = response.GetResponseStream())
            {
                using (StreamReader readStream = new StreamReader(responseStream, Encoding.UTF8))
                {
                    result = readStream.ReadToEnd();
                }
            }
        }
        return result;
    }

Нашел код здесь на Http Post inC #

0 голосов
/ 19 октября 2011

Да, вы можете создать HttpWebRequest, установить Method на POST (если это то, что вам нужно), а затем создать поле формы в запросе с данными вашего файла.Вам нужно немного понять, как работают HTTP-запросы и как правильно создать это поле формы в запросе, но это выполнимо (и не слишком сложно).

...