javascript - Electron 加载远程URL和加载本地文件

标签 javascript electron

我有一个艺术展览的视频装置,其中包含大型视频(几个GB)和一个在线托管的Webapp。

因为我想在展览期间节省一些带宽,所以我想将视频打包到 Electron 应用程序中,在启动过程中加载一次网页,然后从本地文件系统/打包的 Electron 应用程序中加载视频。

我已经实现了禁用webSecurity的功能(很好,我旁边没有人运行此应用程序),并且我已经在JS控制台中收到错误消息
GET file:///idle.mp4 net::ERR_FILE_NOT_FOUND

我找不到正确的路径/文件夹来引用本地文件,对我有提示吗?我不能使用固定/绝对文件路径,因为onlineserver不了解本地文件路径。

我试图将视频文件放入主文件夹和渲染器文件夹,但无法正常工作,仅显示上面的错误消息。谢谢!

目前,我在我的网络应用中引用了这样的视频:

<video id="id12">
  <source src="file:///ship.mp4" type="video/mp4"></source>
</video>

我的文件夹结构如下:Folder

最佳答案

我自己找到了解决方案,只需要在 Electron 应用程序中创建一个fileProtocol拦截器即可:

function createMainWindow() {

  protocol.interceptFileProtocol('file', function(req, callback) {
    var url = req.url.substr(7);
    callback({path: path.normalize(__dirname + url)})
  },function (error) {
    if (error)
      console.error('Failed to register protocol')
  })
...

关于javascript - Electron 加载远程URL和加载本地文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49393845/

相关文章:

javascript - chrome.tabs.executeScript() : How to get result of content script?

javascript - 获取 javascript 对象类型作为 node.js 中的 console.log 输出

jquery - Electron 浏览器应用程序-内存泄漏

javascript - 如何允许JavaScript execCommand (“paste”)在Electron中工作?

Reactjs, Electron Assets 文件夹

JavaScript 单例模式 - 差异?

javascript - Instagram API 提供的 access_token 无效

javascript - 在 Electron 应用程序中禁用键盘快捷键 Alt + Tab

electron - 无法在Electron中接收从主进程发送到渲染器进程的消息

javascript - 如何创建以下类型的 json,该类型将在使用 Angular JS 进行类型提前时有用