首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >ASP.NET WebApi:如何使用WebApi HttpClient通过文件上传执行多部分发布

ASP.NET WebApi:如何使用WebApi HttpClient通过文件上传执行多部分发布
EN

Stack Overflow用户
提问于 2012-04-27 03:14:59
回答 2查看 69.1K关注 0票数 63

我有一个处理来自简单表单的上传的WebApi服务,如下所示:

代码语言:javascript
复制
    <form action="/api/workitems" enctype="multipart/form-data" method="post">
        <input type="hidden" name="type" value="ExtractText" />
        <input type="file" name="FileForUpload" />
        <input type="submit" value="Run test" />
    </form>

但是,我不知道如何使用HttpClient应用程序接口来模拟相同的post。FormUrlEncodedContent位很简单,但是如何将带有名称的文件内容添加到帖子中呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-25 03:27:24

经过多次试验和错误,下面是实际有效的代码:

代码语言:javascript
复制
using (var client = new HttpClient())
{
    using (var content = new MultipartFormDataContent())
    {
        var values = new[]
        {
            new KeyValuePair<string, string>("Foo", "Bar"),
            new KeyValuePair<string, string>("More", "Less"),
        };

        foreach (var keyValuePair in values)
        {
            content.Add(new StringContent(keyValuePair.Value), keyValuePair.Key);
        }

        var fileContent = new ByteArrayContent(System.IO.File.ReadAllBytes(fileName));
        fileContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
        {
            FileName = "Foo.txt"
        };
        content.Add(fileContent);

        var requestUri = "/api/action";
        var result = client.PostAsync(requestUri, content).Result;
    }
}
票数 131
EN

Stack Overflow用户

发布于 2014-09-03 08:34:05

谢谢你@Michael Tepper的回答。

我不得不把附件发到MailGun (电子邮件提供商),我还得稍微修改一下,这样它才能接受我的附件。

代码语言:javascript
复制
var fileContent = new ByteArrayContent(System.IO.File.ReadAllBytes(fileName));
fileContent.Headers.ContentDisposition = 
        new ContentDispositionHeaderValue("form-data") //<- 'form-data' instead of 'attachment'
{
    Name = "attachment", // <- included line...
    FileName = "Foo.txt",
};
multipartFormDataContent.Add(fileContent);

这是供将来参考的。谢谢。

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10339877

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档