我目前用电子vue样板接触电子。
我的目标是显示应用程序中给定文件夹中的所有图像(渲染器进程)。
<template>
<div>
<button @click="selectSourceDir()">Quellverzeichnis</button>
Aktuell: {{sourcePath}}
<button @click="scan()">Aktualisieren</button>
<ul>
<li v-for="image in images">
<!--<img v-bind:src="'data:image/jpg;base64,' + image.base64">-->
<img v-bind:src="'file://' + image.path">
</li>
</ul>
</div>
</template>
<script>
import ImageFile from './ImageDispatchPage/ImageFile';
import fs from 'fs';
import { ipcRenderer as ipc } from 'electron';
import path from 'path';
export default {
name: 'image-dispatch-page',
components: { ImageFile },
data () {
return{
images: [],
sourcePath: null,
}
},
methods: {
scan(){
// If path is not set do nothing
if(!this.sourcePath){
return;
}
// Iterate over all files in directory
let files = fs.readdirSync(this.sourcePath);
const regex = /.jpe?g$/gmi;
for (let file of files){
// Ignore non jpg files
if(!file.match(regex)){
continue;
}
let image = {};
image.name = file;
image.path = path.join(this.sourcePath, file);
image.base64 = new Buffer(fs.readFileSync(image.path)).toString('base64');
this.images.push(image);
}
},
selectSourceDir(){
ipc.send('open-directory-dialog');
ipc.on('selected-directory', (event, directory) => {
this.sourcePath = directory;
});
}
},
created(){
this.scan();
}
}
</script>
<style scoped>
</style>
&#13;
运行此代码会导致以下错误消息: 如果我使用带有base64编码图像的注释掉的行非常慢(第8行),一切都有效。(/ p>
简单地显示这些图像的正确解决方案是什么?
答案 0 :(得分:1)
在我的主要流程中关闭Web安全性就可以了。
mainWindow = new BrowserWindow({
height: 563,
useContentSize: true,
width: 1000,
webPreferences: {
webSecurity: false
}
});