2012-01-16 81 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)); 
}