Отправить файл на службу с помощью 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 работали.