2011-04-25 87 views
-1

我想使用HttpWebRequest以异步方式上传大文件。在C#.Net中使用HttpWebRequest的大文件异步上传

说我上传一个音频文件使用HttpWebRequest &在接收端它应该得到流&播放音频文件。

有没有ref。的任何代码或示例availabel。 ?

请提供是否有任何例子。

在此先感谢

+0

将其分解为单独的部分并加以处理(并随时提出问题)。就目前而言,这个问题太宽泛,无法提供简明扼要的答案。 – 2015-09-24 14:33:47

回答

1

做到这一点很容易。注意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."); 
} 
+0

感谢您的解决方案,但在我的情况下,该文件是一个大型的音频文件。我可以用这个吗? – usr021986 2011-04-26 09:22:19

+0

只要它是一个Stream,就可以加载任何数据。 – bendewey 2011-04-26 13:53:32

1

是否必须是一个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; 
} 
+0

是的,它必须是HttpWebRequest! – usr021986 2011-04-25 08:34:22