【发布时间】:2021-02-24 09:54:58
【问题描述】:
我正在尝试将 byte 的数组从 Blazor 客户端传递给 javascript 函数:
private async void ShowImage()
{
SelectedImageBytes = await GetImageData();
if (SelectedImageBytes.Any())
{
ReceivedDataLength = SelectedImageBytes.Length;
//ReceivedDataLength is 131072, which is correct
JS.InvokeVoidAsync("JS.setImage", SelectedImageBytes, 256, 256);
}
StateHasChanged();
}
在 Javascript 方面:
function setImage(data, width, height)
{
console.log("On Javascript I have received an array of " + data.length);
//data.length is 174764
console.log(data);
//...
}
console.log(data) 输出以下内容:
在我看来,这似乎是我的二进制数据的 base64 字符串表示。根据 wikipedia,从字节数组到 base64 字符串表示的大小大约增加了 33%,在这种情况下确实如此:131072 * 1.33 ~ 174764
那么我的问题是:
- 如何在不将其转换为字符串的情况下从 Blazor (C#) 向 Javascript 传递和接收字节数组
- 如果前面的方法不可行,那么在 Javascript 端将 base64 字符串转换为字节数组的最佳方法是什么。
【问题讨论】:
标签: javascript arrays blazor