electron选择加载本地资源【图片、视频、音频】

弹出文件选择框

// main
const openDialog = async () => {
       const options: OpenDialogOptions = {
			properties: ['openFile'],
			filters: [{ name: 'Videos', extensions: ['mp4', 'mov', 'avi'] }],
		};
		const results = await dialog.showOpenDialog(options)
		return results
	}

此时我们拿到的是 文件的绝对路径,但是在渲染进程是无法根据这个路径去显示。此时就用到了node中文件处理fs

获取文件buffer

// main
import fs from 'fs'
export function getFileBufByFilePath(item: string){
	const buf = fs.readFileSync(item)
	return buf;
}

通过blob转换url

// Renderer
const getURLByBuffer = (buf: number[]) => {
		const uint8Buffer = Uint8Array.from(buf)
		const bolb = new Blob([uint8Buffer])
		return window.URL.createObjectURL(bolb)
	}

总结

electron要成功预览本地文件主要还是利用 fs.readFileSync(item) 对文件做处理,拿到二进制数据,通过主进程与渲染进程通信,把文件的二进制传输给渲染进程,经过 Blob转换得到URL, 就ok了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

今天也想MK代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值