Отправить файл на службу с помощью Microsoft.Net.Http

У меня есть метод:

    private bool UploadFile(Stream fileStream, string fileName)
    {
            HttpContent fileStreamContent = new StreamContent(fileStream);
            using (var client = new HttpClient())
            {
                using (var formData = new MultipartFormDataContent())
                {
                    formData.Add(fileStreamContent, fileName, fileName);

                    var response = client.PostAsync("url", formData).Result;

                    return response.StatusCode == HttpStatusCode.OK;
                }
            }
        }
    }

Это значит, что файл отправляется в службу WCF, но, просматривая журнал Wireshark сообщения, fileStream не добавляется, а только имя файла. Нужно ли делать что-то еще?

2 ответа

Решение

Использовать ByteArrayContent вместо потокового контента.

 var fileContent = new ByteArrayContent(File.ReadAllBytes(fileName));

Затем укажите заголовок размещения контента:

fileContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
{
    FileName = fileName
};

formData.Add(fileContent);

Оказывается, fileStream не попал в метод. С помощью context.Request.Files[0].InputStream казалось виновником. Использование.SaveAs, а затем чтение его как byteArray и присоединение его к MultiPartFormDataContent работали.

Другие вопросы по тегам