简体   繁体   English

从 javascript 代码获取数据到 blazor 中的剃刀页面代码

[英]Get data from a javascript code to razor page code in blazor

Hello I'm very new to JavaScript and Blazor I'm trying to upload a picture from clipboard to my website which will be converted to blob and later be stored on my database.您好,我对 JavaScript 和 Blazor 非常陌生,我正在尝试将剪贴板中的图片上传到我的网站,该图片将被转换为 blob,然后存储在我的数据库中。

I have this JavaScript code which is responsible for pasting an image to an element in my razor page:我有这个 JavaScript 代码,它负责将图像粘贴到我的剃刀页面中的元素:

(function () {
    window.onload = function () {
        document.getElementById('txtPaste').focus();
        document.getElementById('txtPaste').onpaste = function (event) {
            var items = (event.clipboardData || event.originalEvent.clipboardData).items;
            console.log(JSON.stringify(items));
            var blob = null;
            for (var i = 0; i < items.length; i++) {
                if (items[i].type.indexOf("image") === 0) {
                    blob = items[i].getAsFile();
                }
            }
            if (blob !== null) {
                var reader = new FileReader();
                reader.onload = function (event) {
                    //console.log(event.target.result);
                    document.getElementById("imgPaste").src = event.target.result;
                    document.getElementById("hfByteData").value = event.target.result;
                };
                reader.readAsDataURL(blob);
            }
            alert(blob);
        }
    };

})();

This is how it looks in my razor page:这是它在我的剃须刀页面中的样子:

        <textarea id="txtPaste" placeholder="Paste Image Here" style="height: 100px;"></textarea>
        <img id="imgPaste" src="" />
        <input type="hidden" name="hfByteData" id="hfByteData" runat="server"/>
public Image photo { get; set; }

I am trying to retrieve the data from the image, whether it's the image or Base64 string and have it on my variable in the code.我正在尝试从图像中检索数据,无论是图像还是 Base64 字符串,并将其放在代码中的变量中。 How do I get the image that I've pasted show up in the Image photo ?如何让我粘贴的图像显示在Image photo

Blazor has an interface IJSRuntime to call Javascript functions. Blazor 有一个接口IJSRuntime来调用 Javascript 函数。 A comprehensive guide can be found on official docs .可以在官方文档中找到综合指南。

I didn't tested yet, but if you need this function to be executed on window load I think you should override the OnAfterRender or OnAfterRenderAsync life-cycle methods in Blazor and use IJSRuntime there to call it.我还没有测试过,但如果你需要在窗口加载时执行这个函数,我认为你应该覆盖OnAfterRenderOnAfterRenderAsync生命周期方法,并在那里使用IJSRuntime来调用它。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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