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

时间:2013-10-02 15:46:34

标签: c# file-upload upload multipartform-data httpcontent

我有一个方法:

    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 个答案:

答案 0 :(得分:2)

使用ByteArrayContent代替流内容。

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

然后指定您的内容处置标题:

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

formData.Add(fileContent);

答案 1 :(得分:0)

结果是fileStream没有进入该方法。使用context.Request.Files[0].InputStream似乎是罪魁祸首。使用.SaveAs然后将其作为byteArray读取并将其附加到MultiPartFormDataContent工作。