Используя CefSharp и SchemeHandler, как создать файл Javascript () - PullRequest
0 голосов
/ 27 января 2019

На веб-сайте, который я автоматизирую с помощью Cefsharp, у меня есть необходимость предоставить javascript File.File () .Файл, который я хочу передать, сохраняется локально и может быть любым, от PDF до офисных документов или изображений.Что касается CefSharp, я реализовал ISchemeHandlerFactory и ResourceHandler, добавив схему test: //, и, например, я успешно добавил файл JS, подобный этому.

var head = document.head;
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'test://local/folder/mytest.js';
head.appendChild(script);

В соответствии с API для создания файлаМне нужно

бит - массив объектов ArrayBuffer, ArrayBufferView, Blob или DOMString - или смесь любых таких объектов.Это содержимое файла в кодировке UTF-8.

Итак, у меня есть схема проверки: // чтобы получить локальный файл, что мне нужно использовать в javascript, чтобы получить это в файл

1 Ответ

0 голосов
/ 28 января 2019

Я работал это.Сначала я попробовал извлечь, но это не позволило бы мне использовать собственную схему.Поэтому мне пришлось использовать XMLHttpRequest

(function loadDoc() {
    var xhttp = new XMLHttpRequest();
    xhttp.onreadystatechange = function() {
       if (this.readyState == 4 && this.status == 200) {
            var contentType = xhttp.getResponseHeader("Content-Type");
            var file = new File([this.response],'3Markets.xlsx', {type: contentType,});
            //use my new file etc
      }
   };
xhttp.open('GET', 'test://local/folder/3Markets.xlsx', true);
xhttp.responseType = "arraybuffer";
xhttp.send(); 
})()

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

CefCommandLineArgs.Add("disable-web-security", "disable-web-security")

, что мне нужно будет посмотреть, как я могу достичьэто без отключения веб-безопасности или в конечном итоге задать вопрос здесь.

...