[英]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.我还没有测试过,但如果你需要在窗口加载时执行这个函数,我认为你应该覆盖
OnAfterRender
或OnAfterRenderAsync
生命周期方法,并在那里使用IJSRuntime
来调用它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.