我正在尝试做一件非常简单的事情(至少我是这么认为):我想将一些字节数组(大多数时候从文件中读取)和一些描述(只是一个字符串)上传到我的 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/