假设用户能够在电子应用上播放音频。
<audio id="audio" src="/resource/demo.mp3"></audio>
但文件/resource/demo.mp3
不存在。它只是一个网址,我想要的是,请求可以被电子的渲染过程截获,从zip文件中提取demo.mp3
并将其返回给用户,如下所示。
示例代码
const filter = "/resource/**"
electron.interceptRequest(filter, (url) => {
const audio_name = url.split("/")[2]; // demo.mp3
const audio_contents = extract_audio_contents_from_zip(audio_name);
return audio_contents;
});
正如你所看到的,它就像一个Web服务器中的控制器,是否可以在电子中这样做?
答案 0 :(得分:1)
我找到了实现它的方法。
在main.js
中写下以下代码,这是电子的主要过程。
app.on('ready' () => {
...
let buffer = extractAudioContentsFromZip()
// the protocol should be prefixed by zip, like zip://test.wav
protocol.registerBufferProtocol('zip', (request, callback) => {
callback({
mimeType: 'audio',
data: buffer
});
});
});
有关详细信息,请参阅https://electronjs.org/docs/api/protocol。