atr*_*joe 2 c# xml asp.net webclient memorystream
我正在尝试发送我在内存流中创建的XML文件.当我尝试使用UploadFile并获得无效参数的错误时,问题就出现了.我的问题是,无论如何我可以使用我创建的内存流WebClient.UploadFile来发送文件或者我是否需要以其他方式执行此操作?
string firstname = Request.Headers["firstname"].ToString();
string lastname = Request.Headers["lastname"].ToString();
string organization = Request.Headers["organization"].ToString();
string phone = Request.Headers["phone"].ToString();
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
MemoryStream ms = new MemoryStream();
using (XmlWriter xml = XmlWriter.Create(ms, settings))
{
xml.WriteStartDocument();
xml.WriteStartElement("List");
xml.WriteWhitespace("\n");
xml.WriteStartElement("Employee");
{
xml.WriteElementString("First", firstname);
xml.WriteElementString("Last", lastname);
xml.WriteWhitespace("\n");
xml.WriteElementString("Organization", organization);
xml.WriteElementString("Phone", phone);
}
xml.WriteEndElement();
xml.WriteEndDocument();
}
WebClient client = new WebClient();
client.UploadFile("http://test.com/test.aspx", ms);
Run Code Online (Sandbox Code Playgroud)
编辑:2013年编辑,因为当我最初回答时看起来完全错了...
选项:
从中获取字节数组MemoryStream并使用UploadData
client.UploadData("http://test.com/test.aspx", ms.ToArray());
Run Code Online (Sandbox Code Playgroud)OpenWrite改为使用,并写入返回的流
using (var stream = client.OpenWrite("http://test.com/test.aspx"))
{
using (XmlWriter xml = XmlWriter.Create(stream, settings))
{
...
}
}
Run Code Online (Sandbox Code Playgroud)将数据写入文件然后使用 UploadFile
using (XmlWriter xml = XmlWriter.Create("tmp.xml", settings))
{
...
}
client.UploadFile("http://test.com/test.aspx", "tmp.xml");
// Delete temporary file afterwards
Run Code Online (Sandbox Code Playgroud)我个人会采用前两种方法之一,以避免临时文件.
按你的Invalid Arguments:
我没有在WebClient.UploadFile上看到任何方法支持MemoryStream.转换MemoryStream为a String并使用WebClient.UploadString.
| 归档时间: |
|
| 查看次数: |
10825 次 |
| 最近记录: |