【问题标题】:Using CefSharp and a SchemeHandler how to create a Javascript File()使用 CefSharp 和 SchemeHandler 如何创建 Javascript File()
【发布时间】:2019-01-27 17:54:19
【问题描述】:

在我借助 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 的文件内容。

所以我有我的 test:// 方案给我一个本地文件我需要在 javascript 中使用什么来将它放入文件中?

【问题讨论】:

  • 到目前为止你有什么尝试?
  • 很多东西。并且还给出了答案。仍然有“Access-Control-Allow-Origin”问题,这看起来像是另一个问题,因为我真的在猜测我应该做什么。

标签: javascript cefsharp


【解决方案1】:

我成功了。我首先尝试了 fetch ,但这不会让我使用自定义方案。所以我不得不使用 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")

我将不得不看看如何在不禁用网络安全的情况下实现这一点,或者最终在这里提出问题。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多