WebClient.UploadFile передать файл загрузки в виде потока - PullRequest
9 голосов
/ 16 января 2012

Я пытаюсь использовать WebClient.UploadFile в своем проекте для отправки файла на сервер. WebClient.UploadFile принимает имя файла uri в качестве параметра, но я хотел бы передать поток файлов вместо имени файла uri. Это возможно с WebClient?

Ответы [ 2 ]

6 голосов
/ 10 ноября 2015

Вот несколько примеров, показывающих, как записать поток в указанный ресурс, используя класс WebClient :

Использование 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));
 }
2 голосов
/ 18 ноября 2012

Вы можете использовать методы WebClient.OpenWrite и OpenWriteAsync для отправки потока обратно на ваш сервер.

Если вы используете позднее, подпишитесь на OpenWriteCompleted и используйте e.Result в качестве потока на CopyTo.

...