【问题标题】:Flurl Extension for multi-part Put多部分 Put 的 Flurl 扩展
【发布时间】:2019-11-30 09:03:27
【问题描述】:

我有一个 Flurl 实现已经为多部分帖子(json 加上文件附件)工作。我需要为 Put 添加一个以相同方式工作的扩展。 到目前为止,我还没有复制一个。

我的邮政编码...

resp = await url
.PostMultipartAsync(mp => mp
    .AddString("manifest", ManifestJSON)
    .AddFile("attachment", new MemoryStream(sendFile.ToArray()), sendFilename));

我将如何构建一个类似的“.PutMultipartAsync”方法来代替它?

【问题讨论】:

    标签: flurl


    【解决方案1】:

    知道了。

    var content = new Flurl.Http.Content.CapturedMultipartContent();
    content.AddString("manifest", ManifestJSON);
    content.AddFile("attachment", new MemoryStream(sendFile.ToArray()), sendFilename, "application/zip");
    
    resp = await url
    .SendAsync(System.Net.Http.HttpMethod.Put, content);
    

    简单。

    【讨论】:

      【解决方案2】:

      您所做的事情应该非常适合一次性使用。如果您想对其进行真正的健壮,让它感觉像一流的 Flurl 功能,您可以关注 Flurl.Http extensibility pattern 并添加这些扩展方法:

      public static class MultipartPutExtensions
      {
          public static Task<HttpResponseMessage> PutMultipartAsync(this IFlurlRequest request, Action<CapturedMultipartContent> buildContent, CancellationToken cancellationToken = default(CancellationToken))
          {
              var cmc = new CapturedMultipartContent(request.Settings);
              buildContent(cmc);
              return request.SendAsync(HttpMethod.Put, cmc, cancellationToken);
          }
      
          public static Task<HttpResponseMessage> PutMultipartAsync(this Url url, Action<CapturedMultipartContent> buildContent, CancellationToken cancellationToken = default(CancellationToken))
          {
              return new FlurlRequest(url).PutMultipartAsync(buildContent, cancellationToken);
          }
      
          public static Task<HttpResponseMessage> PutMultipartAsync(this string url, Action<CapturedMultipartContent> buildContent, CancellationToken cancellationToken = default(CancellationToken))
          {
              return new FlurlRequest(url).PutMultipartAsync(buildContent, cancellationToken);
          }
      }
      

      这些是直接在PostMultipartAsyncimplementations之后建模的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-11-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-03
        • 2011-08-22
        相关资源
        最近更新 更多