Выгрузка файлов на веб-страницу с помощью WebView2

Я хотел бы создать гибридное приложение, ориентированное на один веб-сайт. Приложение позволит автоматизировать определенные задачи, вставив java-скрипт на веб-страницу. Я не имею никакого влияния на разработку веб-страницы.

На этапах автоматизации мне нужно загрузить файл (например, Word docx, Outlook msg или PDF) на веб-страницу. В моем расширении Chrome, например, я превращаю файл в base64 и отправляю его в виде строки (по частям) на страницу. На странице у меня есть скрипт java, который преобразует Base64 в blob. Такой метод не был бы моим первым выбором для WebView2, однако он может PostWebMessageAsString обрабатывать строку Base64 размером несколько МБ? Какого максимального размера он может выдержать?

Как еще я могу загрузить файл из локальной системы на веб-страницу? Есть ли способ использовать пути локальной файловой системы? Или есть возможность (я считаю, что у CEFSharp это есть) настроить настраиваемую схему (SchemeHandler) для добавления ресурсов?

Также я хотел бы добавить на веб-страницу JS-файл, содержащий множество функций, которые я позже собираюсь вызвать. Возможно, это вопрос, похожий на тот, который у меня был выше, но как я могу загрузить этот файл? Или я могу добавить ссылку на файл JS с путем в локальной файловой системе в теге SCRIPT?


person darbid    schedule 15.02.2021    source источник


Ответы (1)


Не уверен, что это лучший способ сделать это или нет, но поскольку ответ на этот вопрос в основном совпадает с предыдущим вопросом, на который я только что ответил, я хотел бы обратить ваше внимание на этот ответ:

Скрыть или изменить панель инструментов Webview2 при просмотре pdf

Это решает вашу часть вопроса с запущенным Javascript.

Что касается PostWebMessageAsString, да, он должен иметь возможность обрабатывать максимальный размер обычной строки.

Я нигде не читал, что есть какие-либо ограничения на вызов, и до сих пор я сериализовал некоторые большие коллекции объектов на стороне C # в json и отправил их с помощью вызова postmessage без каких-либо проблем.

Вам НЕОБХОДИМО, чтобы в вашем сеансе webview2 был запущен некоторый JS-код, который перехватывает событие сообщения post, лучший способ сделать это - использовать методы, описанные в моем другом ответе, чтобы вставить некоторый JS-код в ваш веб-просмотр перед запуском / загрузкой страница.

person shawty    schedule 21.02.2021