CEFSharp中如何在浏览器中获取文件路径

最近项目需要一个功能,就是能够在CEFSharp中获取浏览器中的文件路径,查阅了不少资料,这里记录一下,以便后续有需要可以回顾。

由于浏览器并不能直接获取文件路径,所以就打算通过调用C#的获取文件路径的方式解决这个问题,就涉及到了C#与js互相调用的问题。

首先在C#中,声明这样一个类:

然后在Form的代码中,添加 chromiumWebbrowser.JavascriptObjectRepository.Settings.LegacyBindingEnabled = true;

CefSharpSettings.WcfEnabled = true;

 CustomObject customObject = new CustomObject(form);
            chromiumWebbrowser.JavascriptObjectRepository.Register("customObject", customObject, false, BindingOptions.DefaultBinder);

此处的form就是当前的form组件

然后在js中:

const openFile = ()=>{

    window.customObject.openFile(getFile);

}

const getFile = (filePath)=>{

    console.log("filePath:",filePath);

}

在按钮点击地方调用一下openFile();

此时运行程序,会发现能够成功唤起winform选择文件的窗口

随便点击一个文件之后,会发现在前端的控制台已经打印出选中的文件路径:

踩了几个坑,包括唤起打开文件窗口失败,是因为不在form的UI线程上;C#通过browser.ExecuteScriptAsync($"getFile('{filePath}')");一直失败;在js代码中调用C#的方法时,方法名首字母小写等问题

  • 9
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值