[英]Blazor Server-Side JS Invoking
嗨,我正在尝试将 c# 中的视频字节移动到 javascript,以使字节在 Blazor 服务器端变为 URL.createObjectURL
我使用 Js Invoke 移动了字节
。CS
if (!string.IsNullOrEmpty(item.PathFile))
{
//Byte Video
byte[] result = GetFile(item.PathFile);
if (result != null)
{
var url = await Js.InvokeAsync<string>("videoUrl", result);
data.ImageString = url;
}
}
.js
function videoUrl(value) {
var byteCharacters = atob(value);
var byteNumbers = new Array(byteCharacters.length);
for (var i = 0; i < byteCharacters.length; i++) {
byteNumbers[i] = byteCharacters.charCodeAt(i);
}
var byteArray = new Uint8Array(byteNumbers);
//Byte Array -> Blob
var file = new Blob([byteArray], { type: 'data:video/mp4;base64' });
//Blob -> Object URL
var fileURL = URL.createObjectURL(file);
return fileURL;
}
我的问题是,我尝试将此脚本用于大小为 3 Mb 的视频,它运行良好,但是当我尝试使用 133Mb 的视频时,出现错误:
错误:System.ArgumentException:长度为 139569235 的 JSON 值太大,不受支持。
我试过修复它,但仍然失败,这让我有点沮丧
那么我的错误有解决方案吗? 或者我该怎么办?
我感谢您的任何建议或反馈
因此,阅读 AspNetDocs github,有一个启动选项可以更改最大消息大小,但我认为它仅适用于从 JS 到 .Net 的调用( https://github.com/do.net/AspNetCore.Docs /问题/21208 )。 值得一试。
services.AddServerSideBlazor()
.AddHubOptions(options => options.MaximumReceiveMessageSize = 32000);
不过就个人而言,我会按照 Magoo 先生在评论中所说的那样做,要么使用 API,要么将数据分块并在另一端重新组装。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.