繁体   English   中英

Blazor 服务端JS调用

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM