将JS ArrayBuffer映射到.Net类型

时间:2015-12-24 15:19:26

标签: javascript asp.net angularjs

我正在尝试做一件非常简单的事情(至少我是这么认为):我想上传一些字节数组(大部分时间从文件中读取)和一些描述(只是一个字符串)到我的ASP.NET网站,我也使用TypeScript和AngularJS,但我不认为它们在这里很重要。所以我的JS代码如下(简化):

 var fileReader = new FileReader();
 fileReader.onloadend = eventData => {
     newItem.Title = "test";
     newItem.FileData = new Int8Array(fileReader.result); //???
     //$http posting newItem to service 
 };
 fileReader.readAsArrayBuffer(fileElement.files[0]); //read from <input type='file'>

我的Web API方法有这个签名:

 public void Create(Item newItem)

使用以下Item类:

    public class Item {
      public string Title { get; set; } //this is mapped correctly
      public byte[] FileData { get; set; } //???
    }

但是,FileData始终为nullTitle有效。有可能做我想要的吗?如果是这样,我应该如何更改标有???(或任何其他)的代码?

1 个答案:

答案 0 :(得分:0)

无法将Int8Array自动映射到byte[]。您必须处理某种编码/解码,这是最好的速度和流量管理方法。但是如果你真的想要得到一个阵列,那么只需要很少的努力即可将一个阵列映射到另一个阵列。对于少量数据,可以使用服务器端的int[]和JS中的常规数组(TS中为number[]