【发布时间】: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对象吗?
-
发送二进制内容的最佳方式是使用ArrayBufferView 或Blobs。 FormData API 可用于发送多个二进制项,但效率低下,因为base64 编码增加了 33% 的额外开销。
-
我在想要映射正文内容的中间件中更新了我的应用程序 api 端点代码。
标签: c# arrays angularjs asp.net-web-api