使用 Microsoft.Net.Http 将文件发送到服务

本文关键字:服务 文件 Microsoft Net Http 使用 | 更新日期: 2023-09-27 18:33:33

我有一个方法:

    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日志,文件流没有被附加,只是文件名。我需要做其他事情吗?

使用 Microsoft.Net.Http 将文件发送到服务

使用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,然后将其作为字节数组读取并将其附加到MultiPartFormDataContent上。