最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

如何获取我的数据从我的IpcMain返回

网站源码admin19浏览0评论

如何获取我的数据从我的IpcMain返回

如何获取我的数据从我的IpcMain返回

我正在创建一个拖放反应,并使用电子来发送和接收我的文件数据。我在console.log中收到一个senderId和sender。如何获取数据?我想念什么?

Dropzone.js文件

const [fileNames, setFileNames] = useState([]);

const handleDrop = useCallback(acceptedFiles => {
  setFileNames(_.map(acceptedFiles, ({ name, type, path, size, lastModified, 
   lastModifiedDate }) => {
    return { name, type, path, size, lastModified, lastModifiedDate };
  }))
  let formData = new FormData();
  formData.append('uploadedFiles', fileNames);
}, [fileNames]);


useEffect(() => {
  ipcRenderer.send(FETCH_AUDIO_FILES, fileNames);
}, [fileNames]); 

useEffect(() => {
  const handler = (filesWithData) => {
  _.map(filesWithData, (event, data) => {
    console.log(data);
  })
};
ipcRenderer.on(METADATA_COMPLETED, handler);
  return () => ipcRenderer.removeListener(METADATA_COMPLETED, handler);
});

Index.js文件

 ipcMain.on(FETCH_AUDIO_FILES, (event, files) => {
    const promises = _.map(files, (file) => {
    return new Promise((resolve, reject) => {
    NodeID3.read(file.path, (err, tags) => {
       resolve({
         ...files,
         ...tags
      })
    })
  })
});

Promise.all(promises).then(results => { 
  event.sender.send(METADATA_COMPLETED, results);
 [![enter image description here][1]][1]});
});
回答如下:

您不能通过IPC通道发送诸如文件之类的特殊对象:

参数将使用结构化克隆算法进行序列化,就像postMessage一样,因此将不包括原型链。发送函数,承诺,符号,WeakMap或WeakSet将引发异常。注意:不推荐发送非标准JavaScript类型(例如DOM对象或特殊的Electron对象),并且将开始引发从Electron 9开始的异常。]

-https://www.electronjs/docs/api/web-contents#contentssendchannel-args

您可以在渲染器进程中将文件读取为Base64字符串,Buffer或其他内容,然后将其发送到主进程,或者如果您要选择文件,则可以在主进程中使用例如https://www.electronjs/docs/api/dialog#dialogshowopendialogbrowserwindow-options吗?

发布评论

评论列表(0)

  1. 暂无评论