您的位置:首页 > 游戏 > 游戏 > 上海正规网站建设_定制商品的app_搜索网站关键词_泉州百度关键词排名

上海正规网站建设_定制商品的app_搜索网站关键词_泉州百度关键词排名

2025/5/14 21:20:34 来源:https://blog.csdn.net/Xiang_Gong_Ya_/article/details/146343560  浏览:    关键词:上海正规网站建设_定制商品的app_搜索网站关键词_泉州百度关键词排名
上海正规网站建设_定制商品的app_搜索网站关键词_泉州百度关键词排名
const generateMiniProgramQR = async (params: { scene: any; page?: any; width?: number; label?: any },ACCESS_TOKEN: any,label: any
) => {try {const url = `https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=${ACCESS_TOKEN}`// 渲染进程// const { ipcRenderer } = require('electron')const downloadFile = async (url: string,params: { scene: any; page?: any; width?: number | undefined; label?: any },filename: string) => {try {const response = await axios.post(url, params, { responseType: 'arraybuffer' })//     //  将二进制数据通过IPC发送到主进程//     ipcRenderer.send('silent-download', {//         buffer: Buffer.from(response.data),//         filename: `${filename}.jpg`,//     })// 关键:转换为 Uint8Array 而非 Bufferconst buffer = new Uint8Array(response.data)// 通过预加载接口发送window.electronAPI.downloadFile(buffer, `${filename}.jpg`)// 监听结果(可选)window.electronAPI.onDownloadResult(({ success, path, error }) => {if (success) console.log('文件保存至:', path)else console.error('保存失败:', error)})} catch (error) {console.error('下载请求失败:', error)}}downloadFile(url, params, label)} catch (error) {// 错误处理console.error('下载失败:', error)}
}

注意

这里用require不行,主线程默认开启contextIsolation,不允许node方式引入
在这里插入图片描述

const { ipcRenderer } = require('electron')

在这里插入图片描述

主线程main.ts,每次修改文件,项目会自动重启

import { app, BrowserWindow, dialog, ipcMain, shell } from 'electron'
import path from 'node:path'
import fs from 'fs'
ipcMain.on('silent-download', (event, { buffer, filename }) => {try {const downloadsPath = app.getPath('desktop'); // 改为系统下载目录:app.getPath('downloads')const filePath = path.join(downloadsPath, filename);// 将 Uint8Array 转换为 Node.js Bufferconst nodeBuffer = Buffer.from(buffer);fs.writeFile(filePath, nodeBuffer, (err) => {if (err) {event.sender.send('download-result', { success: false, error: err.message });} else {event.sender.send('download-result', { success: true, path: filePath });}});} catch (error: any) {event.sender.send('download-result', { success: false, error: error.message });}
});

preload.ts

在这里插入图片描述

import { ipcRenderer, contextBridge } from 'electron'contextBridge.exposeInMainWorld('electronAPI', {downloadFile: (buffer: any, filename: any) => {// 验证数据类型if (!(buffer instanceof Uint8Array)) {throw new Error('必须传递 Uint8Array 类型数据');}ipcRenderer.send('silent-download', { buffer, filename });},// 可选:接收主进程反馈onDownloadResult: (callback: (arg0: any) => void) => {ipcRenderer.on('download-result', (_event, result) => callback(result));}
});

electron-env.d.ts

在这里插入图片描述

interface IElectronAPI {// 声明预加载脚本暴露的方法签名downloadFile: (buffer: any, filename: string) => void;onDownloadResult: (callback: (arg0: any) => void) => void// 其他方法...
}// Used in Renderer process, expose in `preload.ts`
interface Window {ipcRenderer: import('electron').IpcRenderer,electronAPI: IElectronAPI;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com