javascript - 将 JS ArrayBuffer 映射到 .Net 类型

标签 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 始终为 null,而 Title 有效。可以做我想做的事吗?如果是这样,我应该如何更改标记为 ??? (或任何其他)的代码?

最佳答案

无法将 Int8Array 自动映射到 byte[]。您必须处理某种编码/解码,这是对速度和流量进行最佳管理的正确做法。但是,如果您确实希望针对少量数据“以最小的努力将一个数组映射到另一个数组”,那么您可以在服务器端使用 int[] 并在 JS 中使用常规数组( TS 中的数字[])

关于javascript - 将 JS ArrayBuffer 映射到 .Net 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34454799/

相关文章:

javascript - 未选择具有分层数据的选项

javascript - jQuery 在 .on ('canplaythrough' 上放置 false )

javascript - BootStrap 折叠不正确的尺寸

asp.net - 对我自己的表使用表单例份验证

c# - 如何从数据库重新加载相同的值

angularjs - 如何处理一对多关系中的嵌套 Mongoose 查询和异步问题?

javascript - 如何在 Bootstrap Validator 中使用 ID 或 CLASS 而不是使用名称

javascript - Jquery 在 td 中创建带有字典条目的 html 表

javascript - Page_Load 上的 jQuery 调用错误

javascript - 将目录中的所有 JavaScript 文件包含到 AngularJS 中的 html 文件中?咕噜声?