嗨,我正试图将我的视频的字节移动到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,要么将数据分组,然后在另一端重新组装。