2011-04-25 82 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