我想使用HttpWebRequest以异步方式上传大文件。在C#.Net中使用HttpWebRequest的大文件异步上传
说我上传一个音频文件使用HttpWebRequest &在接收端它应该得到流&播放音频文件。
有没有ref。的任何代码或示例availabel。 ?
请提供是否有任何例子。
在此先感谢
我想使用HttpWebRequest以异步方式上传大文件。在C#.Net中使用HttpWebRequest的大文件异步上传
说我上传一个音频文件使用HttpWebRequest &在接收端它应该得到流&播放音频文件。
有没有ref。的任何代码或示例availabel。 ?
请提供是否有任何例子。
在此先感谢
做到这一点很容易。注意BeginGetResponse是实际打开与远程服务器的连接并处理上载的内容。
public void UploadAsync()
{
var data = GetStream("TestFile.txt");
var request = (HttpWebRequest)WebRequest.Create(new Uri("http://example.com/UploadData"));
request.Method = "POST";
data.CopyTo(request.GetRequestStream());
request.BeginGetResponse(DataUploadCompleted, request);
Console.WriteLine("Upload Initiated.");
}
private void DataUploadCompleted(IAsyncResult ar)
{
var request = (HttpWebRequest)ar.AsyncState;
var response = request.EndGetResponse(ar);
Console.WriteLine("Upload Complete.");
}
是否必须是一个HttpWebRequest
?如果你必须使用HttpWebRequest和假设你的输入数据流不是很大,你可以这样做使上传过程异步您可以用WebClient
对象
public void UploadFile(byte[] fileData)
{
var client = new WebClient();
client.UploadDataCompleted += client_UploadDataCompleted;
client.UploadDataAsync(new Uri("http://myuploadlocation.example.com/"), fileData);
}
void client_UploadDataCompleted(object sender, UploadDataCompletedEventArgs e)
{
if (e.Error != null)
{
MessageBox.Show(e.Error.Message);
}
byte[] response = e.Result;
}
是的,它必须是HttpWebRequest! – usr021986 2011-04-25 08:34:22
将其分解为单独的部分并加以处理(并随时提出问题)。就目前而言,这个问题太宽泛,无法提供简明扼要的答案。 – 2015-09-24 14:33:47