【问题标题】:How to access local images in Electron app with Vue如何使用 Vue 在 Electron 应用中访问本地图像
【发布时间】:2021-04-26 05:20:21
【问题描述】:

我有一个使用 Vue 作为其 UI 的 Electron 应用程序。该应用程序从服务器下载压缩数据文件。这些文件包含压缩的 HTML。该应用程序解压缩并显示 HTML。一切正常。

HTML 可能包含引用图像的 img 标签,这些图像也在下载的文件中被压缩。我提取并解压缩这些图像,但随后需要 a) 将它们放在应用程序可以看到它们的地方,b) 构造一个正确引用这些图像的 img 标签。

与其列出我尝试放置这些图像的几十个地方,我只想说无论我将图像放在哪里,我似乎都无法从应用程序中访问它们。我收到一个 404 错误,通常是一条消息说应用程序无法引用本地资源。

关于应用应该在哪里存储这些图像,以及如何从 img 标签中引用它们的任何建议?

我对可以从 Web 引用的图像有一个相关的问题,但我希望在本地下载和缓存,以便应用程序可以在没有 Internet 连接时显示它们。我觉得如果我能解决其中一个问题,我就能同时解决它们。

【问题讨论】:

  • 你可以试试this,整篇文章here
  • @Bubai 存储数据不是问题。我有一个 UserPreferences 对象,它的工作原理与文章描述的非常相似,我可以下载、存储并稍后阅读我在问题中提到的压缩数据文件。问题在于弄清楚图像的放置位置,以便它们可以在 img 标签中被引用并显示。

标签: vue.js webpack electron


【解决方案1】:

以下设置对我有用...

.
├── dist
│   ├── css
│   │   └── app.6cb8b97a.css
│   ├── img
│   │   └── icon.1ba2ae71.png
│   ├── index.html
│   └── js
│       ├── app.08f128b0.js
│       ├── app.08f128b0.js.map
│       ├── chunk-vendors.e396765f.js
│       └── chunk-vendors.e396765f.js.map
├── electron.js
├── package.json
├── package-lock.json
├── public
│   ├── favicon.ico
│   └── index.html
└── src
    ├── App.vue
    ├── components
    │   ├── _breakpoint.scss
    │   └── RoundList.vue
    ├── img
    │   ├── bullet.svg
    │   └── icon.png
    └── index.js

vue.config.js:

const path = require("path");

module.exports = {
  outputDir: path.resolve(__dirname, "./basic_app/dist"),
  publicPath: './'
};

package.json 的一部分

"scripts": {
  "build:vue": "vue-cli-service build",
  "serve:electron": "electron .",
  "serve": "concurrently \"yarn build:vue\" \"yarn serve:electron\"",
  "build:electron": ""
},

输出:https://i.stack.imgur.com/nKK7y.png

【讨论】:

  • 如果您使用https.request() 从您的网站读取图像,然后使用fs.writeFileSync() 将该图像写入文件夹层次结构中的某个文件夹,会发生什么情况。然后,您可以使用 JavaScript 将 <img> 标记插入到引用该图像的 DOM 中吗?如果可行,您将保存的图像放在哪里,以及如何在<img> 标签的src= 属性中引用它?
猜你喜欢
  • 1970-01-01
  • 2017-03-24
  • 2021-07-04
  • 1970-01-01
  • 1970-01-01
  • 2017-02-26
  • 2018-06-29
  • 2015-04-03
  • 2021-04-03
相关资源
最近更新 更多