2012-01-16 79 views
6

我想在我的项目中使用WebClient.UploadFile将文件发布到服务器。 WebClient.UploadFile接受文件名uri作为参数,但我想通过文件流而不是文件名uri。 WebClient可以吗?WebClient.UploadFile传递上传文件为流

+1

@Thomas你是怎么结束做什么? – user990635 2013-08-15 09:53:34

回答

1

你应该能够使用方法WebClient.OpenWriteOpenWriteAsync发送一个流回你的服务器。

如果您使用较晚的版本,则请订阅OpenWriteCompleted并使用e.Result作为到CopyTo的数据流。

2

下面是一些例子,说明如何使用WebClient class写流于指定的资源:

使用WebClient.OpenWrite

using (var client = new WebClient()) 
{ 
    var fileContent = System.IO.File.ReadAllBytes(fileName); 
    using (var postStream = client.OpenWrite(endpointUrl)) 
    { 
     postStream.Write(fileContent, 0, fileContent.Length); 
    } 
} 

使用WebClient.OpenWriteAsync

using (var client = new WebClient()) 
{ 
    client.OpenWriteCompleted += (sender, e) => 
    { 
     var fileContent = System.IO.File.ReadAllBytes(fileName); 
     using (var postStream = e.Result) 
     { 
      postStream.Write(fileContent, 0, fileContent.Length);  
     } 
    }; 
    client.OpenWriteAsync(new Uri(endpointUrl)); 
}