【问题标题】:Pass two byte array to asp.net web api post method将两个字节数组传递给 asp.net web api post 方法
【发布时间】:2017-12-13 22:11:13
【问题描述】:

我在 angularjs 应用程序中有两个字节数组。我想将两个字节数组作为后期操作传递给正文中的 api 端点。

       function getPayload(byteArray1, byteArray2) {
                return {
                    "byteArrayInfo1": byteArray1,
                    "byteArrayInfo2": byteArray2
                };
            }

        var executePostRequest = function (command, byteArray1, byteArray2) {
                    return $http({
                        method: 'POST',
                        headers: { 'Content-Type': 'application/octet-stream' },
                        data: getPayload(byteArray1,byteArray2),
                        url: env.endPointBasePath + command
                    });
            };

当我调试到 dot net api 端点时,它没有得到两字节数组。我尝试将内容类型更改为“内容类型”:“应用程序/json”。它没有用。

我现在关心的是,尝试在一次调用中传递两个字节数组是否很好?这是好习惯吗?如果 javascript/angularjs 中有技术可以合并两个字节数组并在应用程序 api 端点中拆分,我会很高兴。

应用程序 api 端点是基于 owin 的自提升应用程序。我试图从上下文请求正文中检索正文并将其映射到 ByteArrayPayload 类。

private static ByteArrayPayload ExtractContent(OwinContext context)
    {
        if (ContentLengthIsNullOrZero(context.Request.Headers.ContentLength))
        {
            return null;
        }

        int contentLength = Int32.Parse(context.Request.Headers.ContentLength);
        var content = context.Request.Body.Read(contentLength);
       //map content to ByteArrayPayload 
       return new ByteArrayPayload ();
    }

  public class ByteArrayPayload{
    public byte[] ByteArrayInfo1 {get;set;}
    public byte[] ByteArrayInfo2 {get;set;}
  }

【问题讨论】:

  • 你也会发布你的控制器代码
  • 当你说“字节数组”时,你是指ArrayBuffer对象吗?
  • 发送二进制内容的最佳方式是使用ArrayBufferViewBlobsFormData API 可用于发送多个二进制项,但效率低下,因为base64 编码增加了 33% 的额外开销。
  • 我在想要映射正文内容的中间件中更新了我的应用程序 api 端点代码。

标签: c# arrays angularjs asp.net-web-api


【解决方案1】:

发送二进制内容的最佳方式是使用ArrayBufferViewBlobsFormData API 可用于发送多个二进制项,例如application/octet-stream,但效率低下,因为base64 编码增加了 33% 的额外开销。

有关详细信息,请参阅MDN Web API Reference - XHR Send Method

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-16
    • 2018-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-27
    • 1970-01-01
    相关资源
    最近更新 更多