首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用HttpClient上传一组文件?

如何使用HttpClient上传一组文件?
EN

Stack Overflow用户
提问于 2017-08-14 07:23:22
回答 1查看 1.9K关注 0票数 1

如何使用HttpClient将多个文件上传到该https://support.crowdin.com/api/add-file/接口?它需要一个名为files的post参数,其中包含一个文件数组。

代码语言:javascript
运行
复制
HttpClient client = new HttpClient();
using (var content = new MultipartFormDataContent())
        {
            var files = new MultipartContent("files");

            var fileContent = new StreamContent(fileStream);
            fileContent.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("form-data") { FileName = "test.locale.pot" };
            fileContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("text/pot");
            files.Add(fileContent);

            content.Add(files);

            content.Add(new StringContent("gettext"), "type");

            var statusResult = client.PostAsync(addUrl, content).Result;
            var statusString = statusResult.Content.ReadAsStringAsync().Result;
        }

不幸的是我一直

代码语言:javascript
运行
复制
{
  "success":false,
  "error":{
    "code":4,
    "message":"No files specified in request"
  }
}

最后,我想用RestSharp做同样的事情,但是RestSharp和HttpClient有完全不同的API。

EN

回答 1

Stack Overflow用户

发布于 2017-08-14 16:03:08

要正确地将多个文件上传到crowdin,需要执行多项操作。

您需要设置Content-Disposition: Name和FileName。

代码语言:javascript
运行
复制
        using (var content = new MultipartFormDataContent())
        {
            var fileNameOnly = Path.GetFileName(fileName);
            var fileContent = new StreamContent(File.OpenRead(fileName));
            fileContent.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("form-data")
            {
                Name = $"files[{fileNameOnly}]",
                FileName = fileNameOnly
            };
            fileContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("text/pot"); // "gettext" POT format

            content.Add(fileContent, $"files[{fileNameOnly}]");

            content.Add(new StringContent("gettext"), "type");


            var statusResult = client.PostAsync(addUrl, content).Result;
            var statusString = statusResult.Content.ReadAsStringAsync().Result;
        }

只需将文件直接添加到内容中就可以了(假设您给了它正确的名称)。

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

https://stackoverflow.com/questions/45665719

复制
相关文章

相似问题

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