我想使用HttpWebRequest以异步方式上传大文件。
假设我使用HttpWebRequest&上传了一个音频文件。在接收器端,它应该得到流&播放音频文件。
是否有可用于ref的代码或示例。 ?
如果有任何例子,请提供。
提前致谢
答案 0 :(得分:1)
是否必须是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;
}
答案 1 :(得分:1)
如果必须使用HttpWebRequest并假设您的输入数据流不大,则可以通过执行此操作使上载过程成为异步。请注意,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.");
}