WebClient.UploadFile将上传文件作为流传递

时间:2012-01-16 09:51:55

标签: c#-2.0 webclient

我正在尝试在我的项目中使用WebClient.UploadFile将文件发布到服务器。 WebClient.UploadFile接受文件名uri作为参数,但我想传递文件流而不是文件名uri。这可能与WebClient有关吗?

2 个答案:

答案 0 :(得分:5)

以下是一些示例,说明如何使用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));
 }

答案 1 :(得分:2)

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

如果您使用后者,则订阅OpenWriteCompleted并使用e.Result作为CopyTo的流。