Blazor服务器端JS调用



嗨,我正试图将我的视频的字节移动到c#到javascript,使字节变成URL。在Blazor服务器端创建objecturl

我使用Js调用

移动字节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;
}

我的问题是,我尝试这个脚本的视频大小为3Mb它运行良好,但当我尝试一个133Mb的视频我得到一个错误:

错误:系统。ArgumentException:长度为139569235的JSON值太大,不支持。

我试图修复它,但它仍然失败了,这让我有点沮丧

那么我的错误有解决方案吗?或者我该怎么办?

我感谢你的任何建议或反馈

所以,在AspNetDocs github上阅读,有一个启动选项可以改变最大消息大小,但我认为它只适用于从JS到。net (https://github.com/dotnet/AspNetCore.Docs/issues/21208)的调用。不过值得一看。

services.AddServerSideBlazor()
.AddHubOptions(options => options.MaximumReceiveMessageSize = 32000);

就我个人而言,我会按照mr . Magoo在评论中所说的那样做,要么使用API,要么将数据分组,然后在另一端重新组装。

相关内容

  • 没有找到相关文章

最新更新