javascript - Blazor 服务器端 JS 调用
问题描述
嗨,我正在尝试将 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/dotnet/AspNetCore.Docs/issues /21208)。不过值得一试。
services.AddServerSideBlazor()
.AddHubOptions(options => options.MaximumReceiveMessageSize = 32000);
不过就个人而言,我会按照 Magoo 先生在评论中所说的那样做,要么使用 API,要么将数据分块并在另一端重新组装。
推荐阅读
- spring - DAO 的 SpringBootTest JUnit 测试失败
- laravel - 调用没有选项名称的 Artisan 命令
- python - git push heroku master 如何将 Heroku 上的 Django 应用程序从 git deploy 迁移到 container deploy?
- javascript - 从 json 响应中获取键值
- c - C读取文本文件
- amazon-web-services - 从 s3 复制到 hdfs 时 distcp 失败
- machine-learning - 如何使用强化学习进行产品推荐?
- android - 使用 API>24 在 Eclipse 上构建 Android Wear 应用程序
- python - 通过python动态更新表
- sql - SQL 在 Union 语句中使用 Order By