使用 WebView2 将文件上传到网页
Posted
技术标签:
【中文标题】使用 WebView2 将文件上传到网页【英文标题】:Upload files to a webpage with WebView2 【发布时间】:2021-05-18 03:04:53 【问题描述】:我想构建一个针对单个网站的混合应用程序。该应用程序将允许通过将 java 脚本注入网页来自动化某些任务。我对网页的开发没有任何影响。
在自动化步骤中,我需要将文件(例如 Word docx、Outlook msg 或 PDF)上传到网页。例如,在我的 Chrome 扩展程序中,我将文件转换为 base64 并将其作为字符串(部分)发送到页面。在页面上,我有一些将 Base64 转换为 blob 的 java 脚本。这种方法不会是我对 WebView2 的首选,但是 PostWebMessageAsString 可以处理几 MB 大小的 Base64 字符串吗?它可以处理的最大尺寸是多少?
我还能如何从本地系统获取文件到网页中?有没有办法甚至使用本地文件系统路径?或者是否有可能(我相信 CEFSharp 有这个)设置自定义 Schema(SchemeHandler)来添加资源?
我还想在网页中添加一个 JS 文件,其中包含我以后打算调用的许多函数。这可能与我上面的问题类似,但我怎样才能上传这个文件?或者我可以在 SCRIPT 标记中添加对具有本地文件系统路径的 JS 文件的引用吗?
【问题讨论】:
【参考方案1】:不确定这是否是最好的方法,但由于这个问题的答案与我刚刚回答的上一个问题的过程大体相同,我想提醒你注意这个答案:
Hide or modify the toolbar of Webview2 when viewing pdf
这解决了您的“运行 javascript”部分问题。
至于“PostWebMessageAsString”是的,它应该能够处理常规字符串的最大大小。
我没有在任何地方读到调用有任何限制,到目前为止,我已经将一些大型对象集合 C# 端序列化为 json,并使用 postmessage 调用毫无困难地发送它们。
您确实需要在 webview2 会话中运行一些 JS 代码来拦截发布消息事件,最好的方法是使用我在其他答案中概述的方法将一些 JS 代码插入到您的 webview 之前正在运行/加载页面。
【讨论】:
以上是关于使用 WebView2 将文件上传到网页的主要内容,如果未能解决你的问题,请参考以下文章
Selenium 网格执行 - 如何使用 sendkeys 将多个文件一起(一次)上传到网页
html 这会将文件上传到SharePoint库,并使用javascript和jquery从网页添加元数据。